瀏覽代碼

Reversed instance data bindings. Issue #309.

Branimir Karadžić 10 年之前
父節點
當前提交
9d91d3bbbc

+ 4 - 4
examples/05-instancing/varying.def.sc

@@ -2,8 +2,8 @@ vec4 v_color0    : COLOR0    = vec4(1.0, 0.0, 0.0, 1.0);
 
 vec3 a_position  : POSITION;
 vec4 a_color0    : COLOR0;
-vec4 i_data0     : TEXCOORD3;
-vec4 i_data1     : TEXCOORD4;
+vec4 i_data0     : TEXCOORD7;
+vec4 i_data1     : TEXCOORD6;
 vec4 i_data2     : TEXCOORD5;
-vec4 i_data3     : TEXCOORD6;
-vec4 i_data4     : TEXCOORD7;
+vec4 i_data3     : TEXCOORD4;
+vec4 i_data4     : TEXCOORD3;

+ 4 - 4
examples/06-bump/varying.def.sc

@@ -9,7 +9,7 @@ vec3 a_position  : POSITION;
 vec4 a_normal    : NORMAL;
 vec4 a_tangent   : TANGENT;
 vec2 a_texcoord0 : TEXCOORD0;
-vec4 i_data0     : TEXCOORD4;
-vec4 i_data1     : TEXCOORD5;
-vec4 i_data2     : TEXCOORD6;
-vec4 i_data3     : TEXCOORD7;
+vec4 i_data0     : TEXCOORD7;
+vec4 i_data1     : TEXCOORD6;
+vec4 i_data2     : TEXCOORD5;
+vec4 i_data3     : TEXCOORD4;

+ 0 - 5
examples/14-shadowvolumes/varying.def.sc

@@ -8,8 +8,3 @@ vec3 a_position  : POSITION;
 vec4 a_normal    : NORMAL;
 vec4 a_color0    : COLOR0;
 vec2 a_texcoord0 : TEXCOORD0;
-vec4 i_data0     : TEXCOORD3;
-vec4 i_data1     : TEXCOORD4;
-vec4 i_data2     : TEXCOORD5;
-vec4 i_data3     : TEXCOORD6;
-vec4 i_data4     : TEXCOORD7;

+ 0 - 4
examples/21-deferred/varying.def.sc

@@ -11,7 +11,3 @@ vec4 a_normal    : NORMAL;
 vec4 a_tangent   : TANGENT;
 vec2 a_texcoord0 : TEXCOORD0;
 vec4 a_color0    : COLOR0;
-vec4 i_data0     : TEXCOORD4;
-vec4 i_data1     : TEXCOORD5;
-vec4 i_data2     : TEXCOORD6;
-vec4 i_data3     : TEXCOORD7;

+ 1 - 1
examples/24-nbody/varying.def.sc

@@ -1,4 +1,4 @@
 vec2 a_position  : POSITION;
-vec4 i_data3     : TEXCOORD7;
+vec4 i_data0     : TEXCOORD7;
 
 vec3 v_texCoord  : TEXCOORD0 = vec3(0.0, 0.0, 0.0);

+ 3 - 3
examples/24-nbody/vs_particle.sc

@@ -1,4 +1,4 @@
-$input  a_position, i_data3
+$input  a_position, i_data0
 $output v_texCoord
 
 /*
@@ -11,13 +11,13 @@ $output v_texCoord
 
 void main()
 {
-	vec3  eye = mul(u_view, vec4(i_data3.xyz, 1.0) ).xyz;
+	vec3  eye = mul(u_view, vec4(i_data0.xyz, 1.0) ).xyz;
 	vec3  up = normalize(cross(eye, vec3(1.0, 0.0, 0.0) ) );
 	vec3  right = normalize(cross(up, eye));
 	float size = u_particleSize;
 	vec3  position = eye + size * right * a_position.x + size * up * a_position.y;
 
 	v_texCoord.xy = a_position;
-	v_texCoord.z = i_data3.w;
+	v_texCoord.z = i_data0.w;
 	gl_Position = mul(u_proj, vec4(position, 1.0) );
 }

二進制
examples/runtime/shaders/dx11/vs_bump_instanced.bin


二進制
examples/runtime/shaders/dx11/vs_instancing.bin


二進制
examples/runtime/shaders/dx9/vs_bump_instanced.bin


二進制
examples/runtime/shaders/dx9/vs_instancing.bin


二進制
examples/runtime/shaders/gles/vs_particle.bin


二進制
examples/runtime/shaders/glsl/vs_particle.bin


+ 1 - 1
src/renderer_d3d11.cpp

@@ -1600,7 +1600,7 @@ BX_PRAGMA_DIAGNOSTIC_POP();
 
 				for (uint32_t ii = 0; ii < _numInstanceData; ++ii)
 				{
-					uint32_t index = 8-_numInstanceData+ii;
+					uint32_t index = 7-ii; // TEXCOORD7 = i_data0, TEXCOORD6 = i_data1, etc.
 
 					uint32_t jj;
 					D3D11_INPUT_ELEMENT_DESC* curr = vertexElements;

+ 1 - 1
src/renderer_d3d9.cpp

@@ -1970,7 +1970,7 @@ namespace bgfx { namespace d3d9
 		for (uint8_t ii = 0; ii < _numInstanceData; ++ii)
 		{
 			memcpy(elem, &inst, sizeof(D3DVERTEXELEMENT9) );
-			elem->UsageIndex = uint8_t(8-_numInstanceData+ii);
+			elem->UsageIndex = uint8_t(7-ii); // TEXCOORD7 = i_data0, TEXCOORD6 = i_data1, etc.
 			elem->Offset = ii*16;
 			++elem;
 		}