ulf.schroeter Posted April 22, 2011 Share Posted April 22, 2011 Found an interesting blog with articles on large world coordinate precision and resource streaming. Maybe this has some relevance for upcomming UNIGINE large world/coordinate support implementation. world coordinate precision ]"]A Matter Of Precision. Instead of double data type usage of 32-/64-bit fixed-precision-integers for position handling is recommended. Might still give opportunity to use SS2 instructions for high-performance arithmetics. world streaming strategies ] "]Streaming Resource Overview. ]"]Visibility and Priority Tests for Streaming Assets ]"]Texture Streaming Systems with Two Levels of Cache Core ideas are fine-grained resource pre-fetching based on camera distance/speed without view frustum limitation to avoid frame drops/popping, loading only required resource LOD's (e.g. texture mipmaps), usage of different resource priorities (including memory lock) and grouping/link related resources (e.g. undamaged/damaged model and explosion effect) to avoid missing resources on effect sequences...and many more Link to comment
ulf.schroeter Posted May 8, 2011 Author Share Posted May 8, 2011 Another example for a full-fledged streaming system is UDK content streaming Link to comment
ulf.schroeter Posted June 4, 2011 Author Share Posted June 4, 2011 Another example for handling large world coordinate precision Link to comment
ulf.schroeter Posted August 21, 2011 Author Share Posted August 21, 2011 Personal recommendation of a new book 3D Engine Design for Virtual Globes. Got it last week and it's really great. In-depth details especially on coordinates and depthbuffer precision issues and terrain and vector data rendering on global scale. Link to comment
binstream Posted August 26, 2011 Share Posted August 26, 2011 Personal recommendation of a new book 3D Engine Design for Virtual Globes. Got it last week and it's really great. In-depth details especially on coordinates and depthbuffer precision issues and terrain and vector data rendering on global scale. Thank you for the recommendation! Added to the list of purchases. Link to comment
binstream Posted September 28, 2011 Share Posted September 28, 2011 We are gathering real-life test scenes to implement zone-based streaming now. Link to comment
ulf.schroeter Posted September 28, 2011 Author Share Posted September 28, 2011 Good news. Based on last SDK update news there came another design issue to my mind which I haven't mentioned in the email: Once loaded, material/property libraries are not unloaded from the set of world libraries (huge loading speed-up for worlds with shared resources) Above approach might be problematic if zone-based streaming of general node files with embedded zone-specific material/property library references would always keep all libraries in memory. Maybe it would be a much better solution to do some kind of library reference counting for unloading libraries when no more references exist. Global or shared libraries referenced in the top-level world file then would always be kept in memory while additional zone-specific libraries only referenced in one or more zone node file could also be unloaded when all referencing zones have been unloaded. In general all kinds of resources including meshes, textures, images, animations, libraries and node files should be streamable, ref-counted and optionally be lockable in memory as mentioned in Streaming Resource Overview. Link to comment
steve3d Posted September 29, 2011 Share Posted September 29, 2011 do we really need a double precision for unlimited scale world? currently, double precision has no streaming support, this means you can not pack world files, then this double precision makes no sense. Link to comment
ulf.schroeter Posted September 29, 2011 Author Share Posted September 29, 2011 do we really need a double precision for unlimited scale world? currently, double precision has no streaming support, this means you can not pack world files, then this double precision makes no sense. For really large-size worlds (e.g > 10000 units) double-precision support is mandatory to avoid all kind of precision issues (e.g jittering). Therefore UNIGINE has implemented this feature as a first step for support of unlimited worlds. Next step will be to split these large worlds into smaller streamable world zones, so only player surrounding world zones are kept in memory. That's exactly what the upcomming zone-based node streaming support shall provide. BTW even for small-size, but very complex worlds (e.g. Urban Environments like in Crysis 2) requiring only single precision engine builds streaming support is a must have feature. Link to comment
ulf.schroeter Posted October 11, 2012 Author Share Posted October 11, 2012 Some insights into handling unlimited streaming worlds in Dungeon Siege. 10 years old but quite interesting and sophisticated Link to comment
ulf.schroeter Posted October 2, 2013 Author Share Posted October 2, 2013 Solved https://developer.unigine.com/forum/topic/2240-unigine-sdk-2013-10-01-improved-background-loading-updated-documentation-site :) Link to comment
Recommended Posts