《逆水寒的 DX12 和 RT 实践.pdf》由会员分享,可在线阅读,更多相关《逆水寒的 DX12 和 RT 实践.pdf(96页珍藏版)》请在三个皮匠报告上搜索。
1、逆水寒DX12升级经验分享俞云康网易雷火#page#背景2018年NVVIDIA展示的逆水寒RTXdemo#page#背景RTXON食宁义2020周年版本RTXON#page#11to12升级历程API层面替换补全缺失的特性,第三方库升级到12优化会#page#DX12,显式内存管理驱动层更薄多线程Console级别的API高级特性N Variable Shading Rate、 Mesh Shader.#page#DrawDX11:DX12:Draw / DrawlnstancedDrawlnstancedDrawlndexed / DrawlndexedlnstancedDrawlndex
2、edlnstanced没有DrawAutoDrawAuto都是Instanceddraw#page#PSO(Pipeline State)Shaders(Vs, PS,DS, HS,GS)Blend StateRasterizer StateDepth Stencil StateInput LayoutPrimitive Topology TypeRTV and DSV formatls) Stream Output#page#Root SignatureDX11资源绑定:CB:PSSetConstantBuffersSRV:PSSetShaderResourcesPSSetSamplersS
3、ampler:UAV:OMSetRenderTargetsAndunorderedAccess ViewsDX12资源绑定:统一使用Root Signature和DescriiptorHeap#page#Root Signature资源如何绑定的一种约定Resource Heap(s)Root SignatureDescriptor RangesDescriptor HeapCBVDescriptor TableConstantBufferCBV(3)CBVStructuredBuffeSRV(4)CBVConstantBufferUAV(2)SRVTexture2DSRVTexture2DS
4、RVRWexture2DSRVTexture3DUAVRWStructuredBufferUAVConstantBuffer5m/llearniing-directx-12-2/#page#Root Signature虽然创建PSO需要使用RS(需要验证和shader是否匹配),但是使用时还是需要调用SetRootsignature设置RS切换RS需要绑定重新绑定所有资源创建RS要在尽可能小和尽可能通用之前取得平衡#page#Descriptor Heap存放Descriptor的容器相当于array of viewsRoot SignatureDescriptor RangesDescrip
5、tor HeapResource Heap(s)CBVDescriptor TableConstantBufferCBV(3)CBVStructuredBufferSRV(4)CBVConstantBufferUAV(2)SRVTexture2DSRVTexture2DSRVRWexture2DSRVTexture3DUAVRWStructuredBufferUAVConstantB HeapDescriptor就是ViewCRTV/DSV/CBV/SRV/UAV/Sampler)DescriptorHeap就是view的数组、分CPU和GPU可见两类个CommandList同时只能绑定一个C
6、BV-SRV-UAVdescriptorheap和一个sampler descriptor heap使用时需要拷贝Descriptor到当前的GPU可见的Heap上SamplerDescriptorHeap最大为2048#page#MemoryDX11:DX11:CreateBufferD3D11 USAGE DEFAULTCreateTexture1D/2D/3DD3D11 USAGE_IMMUTABLED3D11 USAGE DYNAMICD3D11 USAGE STAGINGDX12:DX12:(GPU only)CreateCommittedResourceDefault HeapUp