texture streaming

unity 和ue都做了

https://docs.unity3d.com/Manual/TextureStreaming.html

https://docs.unrealengine.com/en-US/Engine/Content/Types/Textures/Streaming/Overview/index.html

mip-based  texture streaming

用这个在没loading到的时候会糊 不然没loading到的时候没有tex就更过分了

还有一种 virtual texture streaming


https://docs.unrealengine.com/en-US/Engine/Rendering/VirtualTexturing/index.html


 

https://docs.unrealengine.com/en-US/Engine/Rendering/VirtualTexturing/Streaming/index.html

并不是说后者 在没有loading到的时候 就不是先加载high level的mipmap

而是说 包含没用到的mipmap texture资源 一部分在virtual texutre 池子里 用哪块把哪块加载进来 

可以是一个大的tex 的一部分

应该也是texture 延迟bind技术

这里需要research

 

 

 virtual texture 的支持平台

https://docs.unity3d.com/2020.1/Documentation/Manual/svt-requirements-compatibility.html

 https://docs.unity3d.com/2020.1/Documentation/Manual/svt-how-it-works.html

  • It samples an indirection texture, calculates the non-virtual UVs, and samples a cache texture with these UVs.
  • It translates the virtual UVs to a tile ID, and binds an additional render target that receives these tile IDs. The CPU copies this render target back to main memory asynchronously,
  • and processes it on a separate thread, to create requests for the asynchronous read manager to load these tiles from disk into a cache of GPU memory (if they are not already present).

 是啥

https://www.gdcvault.com/play/1021761/Adaptive-Virtual-Texture-Rendering-in

https://www.youtube.com/watch?v=SVPMhGteeuE

http://mrelusive.com/publications/papers/Software-Virtual-Textures.pdf

procedural virtual texture 这个和adaptive virtual texture不同

 

 

https://media.contentapi.ea.com/content/dam/eacom/frostbite/files/gdc12-terrain-in-battlefield3.pdf

 https://developer.amd.com/wordpress/media/2013/01/Chapter02-Mittring-Advanced_Virtual_Texture_Topics.pdf

 

  要配gpu read back

 

https://www.youtube.com/watch?v=thpn2VjbkPE

 Virtual texturing in software and hardware (SIGGRAPH 2012 Courses)

 

以下是硬件的virtual texture

DirectX叫Tiled Resource,Vulkan叫Sparse Partially-Resident Images,OpenGL叫ARB_sparse_texture,Metal叫Sparse Texture,为每个API做适配也是一个成本。引用自--

https://zhuanlan.zhihu.com/p/138484024

 

上面这两种基本上是一回事

===========

bindless texture 是另外一种事情 是为了 不用bind texture 用别的方法访问贴图

https://www.khronos.org/opengl/wiki/Bindless_Texture

http://www.opengl.org/registry/specs/ARB/bindless_texture.txt

https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_bindless_texture.txt

https://www.khronos.org/registry/OpenGL/extensions/NV/NV_bindless_texture.txt

 https://www.slideshare.net/tlorach/opengl-nvidia-commandlistapproaching-zerodriveroverhead

看下来是为了 一开始全部资源绑定 之后从内存里面拿数据 而不是每次draw之前bind到context上才能用

opengl dx12支持

看上去更像是为了 突破一个shader绑定贴图个数限制的一个功能 丰富材质

 

posted on 2020-06-17 14:40  minggoddess  阅读(903)  评论(0编辑  收藏  举报