瀏覽代碼

[DX12] Fix wrong root signature size with textures and buffers

TothBenoit 1 年之前
父節點
當前提交
2d35c1653e
共有 1 個文件被更改,包括 4 次插入1 次删除
  1. 4 1
      h3d/impl/DX12Driver.hx

+ 4 - 1
h3d/impl/DX12Driver.hx

@@ -1210,7 +1210,10 @@ class DX12Driver extends h3d.impl.Driver {
 		// Root Constants cost 1 per 32-bit value
 		function calcSize( sh : hxsl.RuntimeShader.RuntimeShaderData ) {
 			var s = (sh.globalsSize + sh.paramsSize) << 2;
-			s += sh.texturesCount;
+			// 1 descriptor table for all textures and 1 descriptor table for all samplers
+			s += ( sh.texturesCount > 0 ) ? 2 : 0;
+			// 1 descriptor table for all buffers
+			s += ( sh.bufferCount > 0 ) ? 1 : 0;
 			return s;
 		}