Orbiter-Forum  

Go Back   Orbiter-Forum > Orbiter Space Flight Simulator > Orbiter Visualization Project
Register Blogs Orbinauts List Social Groups FAQ Projects Mark Forums Read

Orbiter Visualization Project Orbiter external graphics development.

Reply
 
Thread Tools
Old 03-14-2013, 02:32 PM   #1
DaveB
Orbinaut
Default DirectX 11 Double Precision ALSO some bugs

I just went back to Orbiter to use it some more after a long time away from it, and I recall an old thread about how precision in long flights have errors because Orbiter uses DirectX 7, which I understand does not intrinsically use double precision. I used earlier versions for long flights. It was said that this problem could be corrected in DirectX 10 or later. Would that problem be fixable with D3D11Client?

Also, for anyone's information, I noticed two big bugs. First, unchecking a module in Orbiter 121103 or Orbiter 100830 causes a Data Execution Prevention violation in Windows XP 32 bit. I have not tested other OSs. I have to erase the modules manually from Orbiter.cfg.

Second, orulex-100721-O2010-alpha (and maybe earlier versions) does not display correctly with Orbiiter 121103 but does display correctly with Orbiter 100830. This problem is big because the orulex layer is erroneously almost at right angle to the planet surface when it should be just layered on top of the surface.
DaveB is offline   Reply With Quote
Old 03-14-2013, 02:42 PM   #2
Urwumpe
Certain Super User
 
Urwumpe's Avatar

Default

The double precision limit is in Orbiters core, the part that simulates the physics, not in the Visualization clients.

FYI: Most of the visualization actually takes place in single precision (32 bit IEEE floating point), since GPUs are optimized for single precision calculations.

Orbiter could have used "long double" precision, but I suspect that martins either didn't know they exist in C++ or was aware that they are no portable type (different compilers have different definitions what a long double is. On most X86 compilers, it is a 80 bit floating point number, the biggest floating point number that the CPU can handle itself.).

On a PowerPC platform (eg, Playstation III), a long double would be a 128 bit floating point number. On a SPARC, it is even a 256 bit (quadruple precision double) number.
Urwumpe is offline   Reply With Quote
Thanked by:
Old 01-17-2017, 06:52 AM   #3
georgemacin
Orbinaut
Default

The decimal keyword denotes a 128-bit data type. Compared to floating-point types, the decimal type has a greater precision and a smaller range, which makes it suitable for financial and monetary calculations. Precision is the main difference where double is a double precision (64 bit) floating point data type and decimal is a 128-bit floating point data type.

Double - 64 bit (15-16 digits)

Decimal - 128 bit (28-29 significant digits)

So Decimals have much higher precision and are usually used within monetary (financial) applications that require a high degree of accuracy. But in performance wise Decimals are slower than double and float types. Double Types are probably the most normally used data type for real values, except handling money. In general, the double type is going to offer at least as great precision and definitely greater speed for arbitrary real numbers. More about...Double vs Decimal

George
georgemacin is offline   Reply With Quote
Reply

  Orbiter-Forum > Orbiter Space Flight Simulator > Orbiter Visualization Project


Thread Tools

Posting Rules
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Forum Jump


All times are GMT. The time now is 11:34 AM.

Quick Links Need Help?


About Us | Rules & Guidelines | TOS Policy | Privacy Policy

Orbiter-Forum is hosted at Orbithangar.com
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Copyright 2007 - 2017, Orbiter-Forum.com. All rights reserved.