Line 102... |
Line 102... |
|
|
0: I = { `ZERO ,`CREG_LAST_t ,`VOID ,`VOID };
|
0: I = { `ZERO ,`CREG_LAST_t ,`VOID ,`VOID };
|
//Set the last 't' to very positive value(500)
|
//Set the last 't' to very positive value(500)
|
1: I = { `SETX ,`CREG_LAST_t ,32'h1F40000 };
|
1: I = { `SETX ,`CREG_LAST_t ,32'h1F40000 };
|
2: I = { `ZERO ,`OREG_PIXEL_COLOR ,`VOID ,`VOID };
|
2: I = { `ZERO ,`OREG_PIXEL_COLOR ,`VOID ,`VOID };
|
3: I = { `NOP ,`RT_FALSE }; //{ `ZERO ,`CREG_PIXEL_2D_POSITION ,`VOID ,`VOID };
|
3: I = { `COPY ,`CREG_PIXEL_2D_POSITION,`CREG_PIXEL_2D_INITIAL_POSITION, `VOID };
|
4: I = { `ZERO ,`OREG_PIXEL_PITCH ,`VOID,`VOID};
|
4: I = { `ZERO ,`OREG_PIXEL_PITCH ,`VOID,`VOID};
|
5: I = { `ZERO ,`R1 ,`VOID ,`VOID };
|
5: I = { `ZERO ,`R1 ,`VOID ,`VOID };
|
6: I = { `ZERO ,`R2 ,`VOID ,`VOID };
|
6: I = { `ZERO ,`R2 ,`VOID ,`VOID };
|
7: I = { `ZERO ,`R3 ,`VOID ,`VOID };
|
7: I = { `ZERO ,`R3 ,`VOID ,`VOID };
|
8: I = { `ZERO ,`R4 ,`VOID ,`VOID };
|
8: I = { `ZERO ,`R4 ,`VOID ,`VOID };
|
9: I = { `ZERO ,`R5 ,`VOID ,`VOID };
|
9: I = { `ZERO ,`R5 ,`VOID ,`VOID };
|
//Harode texture size for now ...
|
//Harode texture size for now ...
|
10: I = { `NOP ,`RT_FALSE };//{ `SETX ,`CREG_TEXTURE_SIZE ,32'h1FE0000 };
|
10: I = { `NOP ,`RT_FALSE };//{ `SETX ,`CREG_TEXTURE_SIZE ,32'h1FE0000 };
|
11: I = { `NOP ,`RT_FALSE };//{ `SETY ,`CREG_TEXTURE_SIZE ,32'h1FE0000 };
|
11: I = { `NOP ,`RT_FALSE };//{ `SETY ,`CREG_TEXTURE_SIZE ,32'h1FE0000 };
|
12: I = { `NOP ,`RT_FALSE };//{ `SETZ ,`CREG_TEXTURE_SIZE ,32'h1FE0000 };
|
12: I = { `RETURN ,`RT_TRUE };
|
13: I = { `RETURN ,`RT_TRUE };
|
13: I = { `NOP ,`RT_FALSE };//{ `SETZ ,`CREG_TEXTURE_SIZE ,32'h1FE0000 };
|
|
|
|
|
|
|
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
//Micro code for CPPU
|
//Micro code for CPPU
|
//TAG_CPPU_UCODE_ADDRESS:
|
//TAG_CPPU_UCODE_ADDRESS:
|
Line 158... |
Line 159... |
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
//Micro code for AABBIU
|
//Micro code for AABBIU
|
//TAG_AABBIU_UCODE_ADDRESS:
|
//TAG_AABBIU_UCODE_ADDRESS:
|
|
|
33: I = { `ZERO ,`R3 ,`VOID ,`VOID };
|
33: I = { `ZERO ,`R3 ,`VOID ,`VOID };
|
34: I = { `ZERO ,`R5 ,`VOID ,`VOID };
|
34: I = { `SETX ,`CREG_LAST_t ,32'h1F40000 }; //{ `ZERO ,`R5 ,`VOID ,`VOID };
|
35: I = { `NOP ,`RT_FALSE };
|
35: I = { `RETURN ,`RT_TRUE };//{ `ZERO ,`R6, `VOID, `VOID };
|
|
|
//LABEL_TEST_RAY_X_ORIGEN:
|
//LABEL_TEST_RAY_X_ORIGEN:
|
36: I = { `JGEX ,`LABEL_ELSE_IFX ,`CREG_CAMERA_POSITION ,`CREG_AABBMIN };
|
36: I = { `JGEX ,`LABEL_ELSE_IFX ,`CREG_CAMERA_POSITION ,`CREG_AABBMIN };
|
37: I = { `SUB ,`R1 ,`CREG_AABBMIN ,`CREG_CAMERA_POSITION };
|
37: I = { `SUB ,`R1 ,`CREG_AABBMIN ,`CREG_CAMERA_POSITION };
|
38: I = { `JLEX ,`LABEL1 ,`R1 ,`CREG_UNORMALIZED_DIRECTION };
|
38: I = { `JLEX ,`LABEL1 ,`R1 ,`CREG_UNORMALIZED_DIRECTION };
|
Line 238... |
Line 239... |
80: I = { `SETZ ,`R5 ,32'b1 };
|
80: I = { `SETZ ,`R5 ,32'b1 };
|
|
|
//LABEL_RAY_INSIDE_BOX:
|
//LABEL_RAY_INSIDE_BOX:
|
81: I = { `ZERO ,`R1 ,`VOID ,`VOID };
|
81: I = { `ZERO ,`R1 ,`VOID ,`VOID };
|
82: I = { `JEQX ,`LABEL_TEST_YZ_PLANE ,`R1 ,`RAY_INSIDE_BOX };
|
82: I = { `JEQX ,`LABEL_TEST_YZ_PLANE ,`R1 ,`RAY_INSIDE_BOX };
|
|
//BUG, need a NOP here, else pipeline gets confused
|
83: I = { `RETURN ,`RT_TRUE };
|
83: I = { `RETURN ,`RT_TRUE };
|
|
|
//LABEL_TEST_YZ_PLANE:
|
//LABEL_TEST_YZ_PLANE:
|
84: I = { `JNEX ,`LABEL_TEST_XZ_PLANE ,`R5 ,`R1 };
|
84: I = { `JNEX ,`LABEL_TEST_XZ_PLANE ,`R5 ,`R1 };
|
85: I = { `SWIZZLE3D ,`R6 ,`SWIZZLE_XXX };
|
85: I = { `SWIZZLE3D ,`R6 ,`SWIZZLE_XXX };
|
Line 366... |
Line 368... |
155: I = { `SUB ,`R1 ,`CREG_UV1_LAST ,`CREG_UV0_LAST };
|
155: I = { `SUB ,`R1 ,`CREG_UV1_LAST ,`CREG_UV0_LAST };
|
156: I = { `SUB ,`R2 ,`CREG_UV2_LAST ,`CREG_UV0_LAST };
|
156: I = { `SUB ,`R2 ,`CREG_UV2_LAST ,`CREG_UV0_LAST };
|
157: I = { `MUL ,`R1 ,`CREG_LAST_u ,`R1 };
|
157: I = { `MUL ,`R1 ,`CREG_LAST_u ,`R1 };
|
158: I = { `MUL ,`R2 ,`CREG_LAST_v ,`R2 };
|
158: I = { `MUL ,`R2 ,`CREG_LAST_v ,`R2 };
|
159: I = { `ADD ,`R1 ,`R1 ,`R2 };
|
159: I = { `ADD ,`R1 ,`R1 ,`R2 };
|
160: I = { `ADD ,`R1 ,`R1 ,`CREG_UV0 };
|
160: I = { `ADD ,`R1 ,`R1 ,`CREG_UV0_LAST };
|
|
|
//R7x : fu = (u_coordinate) * gTexture.mWidth;
|
//R7x : fu = (u_coordinate) * gTexture.mWidth;
|
//R7y : fv = (v_coordinate) * gTexture.mWidth;
|
//R7y : fv = (v_coordinate) * gTexture.mWidth;
|
//R7z : 0
|
//R7z : 0
|
161: I = { `MUL ,`R7 ,`R1 ,`CREG_TEXTURE_SIZE };
|
161: I = { `MUL ,`R7 ,`R1 ,`CREG_TEXTURE_SIZE };
|
Line 410... |
Line 412... |
|
|
//R4 = [u1, u2 0]
|
//R4 = [u1, u2 0]
|
167: I = { `XCHANGEX ,`R4 ,`R2 ,`R1 };
|
167: I = { `XCHANGEX ,`R4 ,`R2 ,`R1 };
|
|
|
//R2 = [v2*H, v1*H, 0]
|
//R2 = [v2*H, v1*H, 0]
|
//R2 = FixedToInteger(R3*CREG_TEXTURE_SIZE)
|
|
168: I = { `UNSCALE ,`R9 ,`R3 ,`VOID };
|
168: I = { `UNSCALE ,`R9 ,`R3 ,`VOID };
|
169: I = { `UNSCALE ,`R8 ,`CREG_TEXTURE_SIZE ,`VOID };
|
169: I = { `UNSCALE ,`R8 ,`CREG_TEXTURE_SIZE ,`VOID };
|
170: I = { `IMUL ,`R2 ,`R9 ,`R8 };
|
170: I = { `IMUL ,`R2 ,`R9 ,`R8 };
|
|
|
//OREG_TEX_COORD1 = [u1 + v2*H, u2 + v1*H, 0]
|
//OREG_TEX_COORD1 = [u1 + v2*H, u2 + v1*H, 0]
|
//R4 = FixedToIinteger(R4)
|
//R4 = FixedToIinteger(R4)
|
171: I = { `UNSCALE ,`R4 ,`R4 ,`VOID };
|
171: I = { `UNSCALE ,`R4 ,`R4 ,`VOID };
|
172: I = { `ADD ,`OREG_TEX_COORD1 ,`R2 ,`R4 };
|
172: I = { `ADD ,`R12 ,`R2 ,`R4 }; // { `ADD ,`OREG_TEX_COORD1 ,`R2 ,`R4 };
|
173: I = { `SETX ,`R5 ,32'h3 };
|
173: I = { `SETX ,`R5 ,32'h3 };
|
174: I = { `SETY ,`R5 ,32'h3 };
|
174: I = { `SETY ,`R5 ,32'h3 };
|
175: I = { `SETZ ,`R5 ,32'h3 };
|
175: I = { `SETZ ,`R5 ,32'h3 };
|
//Multiply by 3 (the pitch)
|
//Multiply by 3 (the pitch)
|
176: I = { `IMUL ,`OREG_TEX_COORD1 ,`OREG_TEX_COORD1 ,`R5 };
|
176: I = { `IMUL ,`OREG_TEX_COORD1 ,`R12 ,`R5 };
|
|
|
//R4 = [u2 u1 0]
|
//R4 = [u2 u1 0]
|
177: I = { `SWIZZLE3D ,`R4 ,`SWIZZLE_YXZ };
|
177: I = { `SWIZZLE3D ,`R4 ,`SWIZZLE_YXZ };
|
|
|
|
|
//OREG_TEX_COORD2 [u2 + v2*H, u1 + v1*H, 0]
|
//OREG_TEX_COORD2 [u2 + v2*H, u1 + v1*H, 0]
|
178: I = { `ADD ,`OREG_TEX_COORD2 ,`R2 ,`R4 };
|
178: I = { `ADD ,`R12 ,`R2 ,`R4 };
|
//Multiply by 3 (the pitch)
|
//Multiply by 3 (the pitch)
|
179: I = { `IMUL ,`OREG_TEX_COORD2 ,`OREG_TEX_COORD2 ,`R5 };
|
179: I = { `IMUL ,`OREG_TEX_COORD2 ,`R12 ,`R5 };
|
|
|
|
|
//Cool now get the weights
|
//Cool now get the weights
|
|
|
//w1 = (1 - fracu) * (1 - fracv);
|
//w1 = (1 - fracu) * (1 - fracv);
|
Line 463... |
Line 464... |
184: I = { `INC ,`R5 ,`R5 ,`VOID };
|
184: I = { `INC ,`R5 ,`R5 ,`VOID };
|
|
|
//R5x: 1 - fracv
|
//R5x: 1 - fracv
|
//R5y: 1 - fracu
|
//R5y: 1 - fracu
|
//R5y: (1 - fracv)(1 - fracu)
|
//R5y: (1 - fracv)(1 - fracu)
|
185: I = { `MULP ,`OREG_TEXWEIGHT1 ,`R5 ,`VOID };
|
185: I = { `MULP ,`CREG_TEXWEIGHT1 ,`R5 ,`VOID };
|
|
|
//OREG_TEXWEIGHT1.x = (1 - fracv)(1 - fracu)
|
//CREG_TEXWEIGHT1.x = (1 - fracv)(1 - fracu)
|
//OREG_TEXWEIGHT1.y = (1 - fracv)(1 - fracu)
|
//CREG_TEXWEIGHT1.y = (1 - fracv)(1 - fracu)
|
//OREG_TEXWEIGHT1.z = (1 - fracv)(1 - fracu)
|
//CREG_TEXWEIGHT1.z = (1 - fracv)(1 - fracu)
|
186: I = { `SWIZZLE3D ,`OREG_TEXWEIGHT1 ,`SWIZZLE_ZZZ };
|
186: I = { `SWIZZLE3D ,`CREG_TEXWEIGHT1 ,`SWIZZLE_ZZZ };
|
|
|
|
|
//R6x: w2: fracu * (1 - fracv )
|
//R6x: w2: fracu * (1 - fracv )
|
//R6y: w3: fracv * (1 - fracu )
|
//R6y: w3: fracv * (1 - fracu )
|
//R6z: 0
|
//R6z: 0
|
187: I = { `MUL ,`R6 ,`R4 ,`R5 };
|
187: I = { `MUL ,`R6 ,`R4 ,`R5 };
|
|
|
//OREG_TEXWEIGHT2.x = fracu * (1 - fracv )
|
//CREG_TEXWEIGHT2.x = fracu * (1 - fracv )
|
//OREG_TEXWEIGHT2.y = fracu * (1 - fracv )
|
//CREG_TEXWEIGHT2.y = fracu * (1 - fracv )
|
//OREG_TEXWEIGHT2.z = fracu * (1 - fracv )
|
//CREG_TEXWEIGHT2.z = fracu * (1 - fracv )
|
188: I = { `COPY ,`OREG_TEXWEIGHT2 ,`R6 ,`VOID };
|
188: I = { `COPY ,`CREG_TEXWEIGHT2 ,`R6 ,`VOID };
|
189: I = { `SWIZZLE3D ,`OREG_TEXWEIGHT2 ,`SWIZZLE_XXX };
|
189: I = { `SWIZZLE3D ,`CREG_TEXWEIGHT2 ,`SWIZZLE_XXX };
|
|
|
//OREG_TEXWEIGHT3.x = fracv * (1 - fracu )
|
//CREG_TEXWEIGHT3.x = fracv * (1 - fracu )
|
//OREG_TEXWEIGHT3.y = fracv * (1 - fracu )
|
//CREG_TEXWEIGHT3.y = fracv * (1 - fracu )
|
//OREG_TEXWEIGHT3.z = fracv * (1 - fracu )
|
//CREG_TEXWEIGHT3.z = fracv * (1 - fracu )
|
190: I = { `COPY ,`OREG_TEXWEIGHT3 ,`R6 ,`VOID };
|
190: I = { `COPY ,`CREG_TEXWEIGHT3 ,`R6 ,`VOID };
|
191: I = { `SWIZZLE3D ,`OREG_TEXWEIGHT3 ,`SWIZZLE_YYY };
|
191: I = { `SWIZZLE3D ,`CREG_TEXWEIGHT3 ,`SWIZZLE_YYY };
|
|
|
|
|
//R4x: fracu
|
//R4x: fracu
|
//R4y: fracv
|
//R4y: fracv
|
//R4z: fracu * fracv
|
//R4z: fracu * fracv
|
192: I = { `MULP ,`R4 ,`R4 ,`VOID };
|
192: I = { `MULP ,`R4 ,`R4 ,`VOID };
|
|
|
//OREG_TEXWEIGHT4.x = fracv * fracu
|
//CREG_TEXWEIGHT4.x = fracv * fracu
|
//OREG_TEXWEIGHT4.y = fracv * fracu
|
//CREG_TEXWEIGHT4.y = fracv * fracu
|
//OREG_TEXWEIGHT4.z = fracv * fracu
|
//CREG_TEXWEIGHT4.z = fracv * fracu
|
193: I = { `COPY ,`OREG_TEXWEIGHT4 ,`R4 ,`VOID };
|
193: I = { `COPY ,`CREG_TEXWEIGHT4 ,`R4 ,`VOID };
|
194: I = { `SWIZZLE3D ,`OREG_TEXWEIGHT4 ,`SWIZZLE_ZZZ };
|
194: I = { `SWIZZLE3D ,`CREG_TEXWEIGHT4 ,`SWIZZLE_ZZZ };
|
|
|
|
|
//LABEL_TCC_EXIT:
|
//LABEL_TCC_EXIT:
|
195: I = { `RETURN ,`RT_TRUE };
|
195: I = { `RETURN ,`RT_TRUE };
|
|
|
Line 541... |
Line 542... |
//CColor TextureColor;
|
//CColor TextureColor;
|
//TextureColor.R = c1.R * w1 + c2.R * w2 + c3.R * w3 + c4.R * w4;
|
//TextureColor.R = c1.R * w1 + c2.R * w2 + c3.R * w3 + c4.R * w4;
|
//TextureColor.G = c1.G * w1 + c2.G * w2 + c3.G * w3 + c4.G * w4;
|
//TextureColor.G = c1.G * w1 + c2.G * w2 + c3.G * w3 + c4.G * w4;
|
//TextureColor.B = c1.B * w1 + c2.B * w2 + c3.B * w3 + c4.B * w4;
|
//TextureColor.B = c1.B * w1 + c2.B * w2 + c3.B * w3 + c4.B * w4;
|
|
|
212: I = { `MUL ,`R1 ,`CREG_TEX_COLOR5 ,`OREG_TEXWEIGHT1 };
|
212: I = { `MUL ,`R1 ,`CREG_TEX_COLOR5 ,`CREG_TEXWEIGHT1 };
|
213: I = { `MUL ,`R2 ,`CREG_TEX_COLOR2 ,`OREG_TEXWEIGHT2 };
|
213: I = { `MUL ,`R2 ,`CREG_TEX_COLOR2 ,`CREG_TEXWEIGHT2 };
|
214: I = { `MUL ,`R3 ,`CREG_TEX_COLOR1 ,`OREG_TEXWEIGHT3 };
|
214: I = { `MUL ,`R3 ,`CREG_TEX_COLOR1 ,`CREG_TEXWEIGHT3 };
|
215: I = { `MUL ,`R4 ,`CREG_TEX_COLOR4 ,`OREG_TEXWEIGHT4 };
|
215: I = { `MUL ,`R4 ,`CREG_TEX_COLOR4 ,`CREG_TEXWEIGHT4 };
|
216: I = { `ADD ,`CREG_TEXTURE_COLOR ,`R1 ,`R2 };
|
216: I = { `ADD ,`CREG_TEXTURE_COLOR ,`R1 ,`R2 };
|
217: I = { `ADD ,`CREG_TEXTURE_COLOR ,`CREG_TEXTURE_COLOR ,`R3 };
|
217: I = { `ADD ,`CREG_TEXTURE_COLOR ,`CREG_TEXTURE_COLOR ,`R3 };
|
218: I = { `ADD ,`CREG_TEXTURE_COLOR ,`CREG_TEXTURE_COLOR ,`R4 };
|
218: I = { `ADD ,`CREG_TEXTURE_COLOR ,`CREG_TEXTURE_COLOR ,`R4 };
|
219: I = { `RETURN ,`RT_TRUE };
|
219: I = { `RETURN ,`RT_TRUE };
|
|
|