1、VARIABLE RATE SHADINGF口DEEPLEARNINGSUPER SAMPLINGDLSS在UIGKSILVERX引擎的应用倪骏扬王北辰游戏客户端开发,腾讯游戏客户端开发,腾讯#page#目录Variable Rate Shading简介Quicksilverx引擎集成VRS在无限法则(RingofElysium)中的应用总结#page#WRS概述浪染分辩率越来越高,PixelShader(PS)的计算量也越来越大HDR格式加剧了带宽问题VRS可以让我们通过减少ps的调用次数嘉福从而提高性能!是一种性能和画质的折中方案#page#TIER-1限制如果在shader的输入输出中定
2、义了SV_coverage,那么VRS不会有效果EvaluateAttributefAtcentroidlatSamplelSnappedl,在Tier1中无法使用,如果shader中有定义同样会使得VRS失效,使用centroid”或者sample这些关键字也会引发同样的问题#page#VRS可变着色率如图16x16分辩率的全屏后处理pass使用2x2的着色率可以看到VRS大大减少了PS的调用次数,这个case大约减少到了1/4VRS1x1-256像素有256次PS调用VRS2x2-256像素有64次PS调用VRS4x4-256像素只有只有16次PS调用#page#边缘保持VRS只是减少了P
3、S的调用次数,但是光栅化和深度模板测试都是全分辩率,所以可以保证物件的边缘不会出现模糊问题VRS2X2Scale 50%#page#D12AP接口Tier1:通过调用commandlist中的RSSetShadingRate(.-)使得后续所有drawcall都会使用改着色率Tier2:指定着色率图像或者通过SV_ShadingRate指定每三角形着色率通过combiner组合各种着色率Min/max/combine/passthroughenum D3D12_SHADING RATED3D12_SHADING_RATE_1X1=0D3D12 SHADING RATE_1X2=0x1D3D12
4、 SHADING RATE 2X1=0x4,D3D12_SHADING_RATE_2X2=0x5,D3D12 SHADING RATE_2X4=0x6,D3D12 SHADING RATE 4X2=0x9D3D12_SHADING_RATE_4X4=0xaD3D12_SHADING_RATE;#page#在咖ICKSILVER-X中集成VRSQuicksilverx引擎启无限法则S0GREAT0022noghtosetitse8.5A98984#page#在咖ICKSILVER-X中集成VRS先进特性:DX12支持(2019.6),动态全局光照(2020.3),基于光线追踪的全局光照(2020
5、.10),基于strrand的毛发系统#page#接口上兼容DX9DX12#ifdefQS_DX12#define VRS_API_ENABLED 1/VRS core API codeDX12API级别集成#define VRS_APP_ENABLED 1/ VRS application code#else/QS_DX17#define VRS API ENABLED e / VRS5 core API code#endif/QS_DX12支持Tier1级别,引擎为了兼容/Shading rate enwin7仍使用sm5.0代码上兼容dx9和dx12.EShadingRate_1x1=0
6、,EShadingRate_1x2=x1,EShadingRate_2x1通过D3D12feature检测VRS支持EShadingRate_2x2=0x5,/Additional Shading Rates SupportedEShadingRate_2x4=0x6,不同pass单独使用自己的着色EShadingRate_4x2=0x9EShadingRate_4x4=xa率D5inline void QsD3D12Drv::SetshadingRate(EShadingRaterate)cache着色率参数减少api调用#1fVRS_API_ENABLEDGetcraphiccmdList