OSVR / OSVR-Unity

Package for authoring OSVR experiences with Unity.
Apache License 2.0
99 stars 38 forks source link

Fix problem with Unity Anti Aliasing Quality setting being ignored in VR #140

Closed ChrisDenham closed 8 years ago

ChrisDenham commented 8 years ago

For more info see:

https://github.com/sensics/OSVR-RenderManager/issues/53

ChrisDenham commented 8 years ago

A secondary thought on this.... I notice that you can change the Unity Quality settings dynamically at runtime, but of course this change only uses the copy of the AA level on startup. So, I guess an improvement on this PR would be to track the AA quality level like the the non VR renders manage to do?

DuFF14 commented 8 years ago

Definitely something to consider. Adaptive Quality is something that we're going to be looking into, but I don't know how much of that will go in Unity and what would be in the Unity Rendering plugin and RenderManager, since the idea with Adaptive Quality is to automatically adjust quality based on how much work the GPU is doing -- info that isn't readily available at the Unity level. Of course, there are more basic implementations that could work without knowing about GPU load, perhaps based on framerate.

We probably won't want to dynamically adjust quality settings in the plugin at this time, but that's something a developer might want to do in their game. If they're already doing that, it's their responsibility to make sure the RenderTextures AA setting gets updated as well... but it probably wouldn't hurt anything to update the RenderTexutre AA to match Quality Settings every frame. Would like to get some more discussion going on this. More info on Adaptive Quality and other considerations: http://alex.vlachos.com/graphics/Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016.pdf

DuFF14 commented 8 years ago

Going to merge this in. In regards to changing it dynamically, I get the error "Setting anti-aliasing of already created render texture is not supported!", so it looks like this will only work at RenderTexture creation time. Updating it dynamically would require recreating the RenderTextures. I will make a note about this. Thanks!