Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
Also - a side note to your example: Adjusting fixedDeltaTime in Unity at runtime is generally a bad idea. I have done a lot of experiments with this in Unity, and the Physics system and interactions will be different if you don't have a consistent fixedDeltaTime. For example, a flying ball that hits another ball will act differently between to otherwise identical simulations if the fixedDeltaTime is different. This could lead to game physics being different for different players or even changing within the same play session if it is being dynamically adjusted. Both forces and collisions will be different enough to be noticeable. Better is to pick a fixed frame rate based on level of physics accuracy your game requires (could even be higher than 90fps), and not have it locked to your render framerate at all. In my case I have picked 90fps physics rate, and if game drops to 45fps, I will let physics still run at 90fps.
Yes - if you bring up SteamVR's frame timing graph, you will see a red line on the stacked gpu view when interleaved reprojection is active and can get a feel for how it gets turned on/off. There is also a checkbox to display the frame timing in-headset (attached to the back of your right controller). Displaying the frame timing in headset incurs a little bit of overhead (you'll see the green gpu band get a bit thicker) so keep that in mind when using it to track down issues.
Also, good catch on the Unity physics update behavior. Thanks!
IE: I'm hoping I can by with the bare minimum specs till the next-gen cards swings around but not sure where I am without actualling having a Vive - I think he said he was aiming for the 670.
https://www.youtube.com/watch?v=E0cGe9xtwVk
Ignore the red lines for missed frames, as they were caused by him recording video. No frames are dropped when this user runs the game without reprojection. However when reprojection is enabled, every single physics object, upon being 'grabbed' explodes off in a random direction.
I'm not doing anything particularly unusual. My core physics code functions very similarly to NewtonVRs, and yet I seem to be the only one experiencing this. Any thoughts from anyone?
It seems to be caused by the fixedDeltaTime changing when the reprojection kicks in. You can fix this by turning off the "Lock Physics Update Rate To Render Frequency" on the Steam VR_Render component of the [SteamVR] object.
You might also want to set your fixed timestep (in the time settings) to 0.01111111 if it's not already, to make sure it updates 90 times a second.
Time.maximumDeltaTime = Time.fixedDeltaTime * timing.m_nNumFramePresents;
I would suggest heavily against changing maximumDeltaTime to be so low, as it can actually just... straight up prevent fixedupdate callbacks from firing, which can prevent things like... stabilizing physics code from firing at all.
My tester with a low-spec machine (2012 amd cpu) that drops into reprojection mode constantly with my game found all errant physics behavior went away after this change.
Given this, I would suggest that anyone with a physics-heavy game (where physics drives logic) should _not_ dynamically change fixedDeltaTime based on current framerate.
Instead, it is modifying maximumDeltaTimemail to allow physics to update twice when reprojection kicks in.
It's pretty annoying having to alter large segments of code this soon before launch.