OpenCores
URL https://opencores.org/ocsvn/theia_gpu/theia_gpu/trunk

Subversion Repositories theia_gpu

[/] [theia_gpu/] [branches/] [beta_2.0/] [regressions/] [single_core/] [test_hit.vp] - Blame information for rev 230

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 230 diegovalve
// [CORE  0] IP:   38(             1974300ns JNEX        0029 [ 00020000 fffe0000 fffe0000 ][ 00000002 00140000 00000000 ] =  [ 00000000 00000000 00000000 ])
2
// [CORE  0] IP:   42(             1974320ns NOP         0000 [ 00000000 00020000 00000009 ][ 00000000 00020000 00000009 ] =  [ 00000000 00000000 00000000 ])
3
// [CORE  0] IP:   43(             1974340ns CALL        00b9 [ 00000000 00000000 00000000 ][ xxxxxxxx xxxxxxxx xxxxxxxx ] =  [ 00000000 00000000 00000000 ])
4
// [CORE  0] IP:  186(             1974360ns ZERO        0080 [ 00000000 00020000 00000009 ][ 00000000 00020000 00000009 ] =  [ 00000000 00000000 00000000 ])
5
// [CORE  0] IP:  187(             1974380ns SETY        0049 [ 00020000 00000000 00000000 ][ 00000000 00020000 00000000 ] =  [ 00000000 00020000 00000000 ])
6
// [CORE  0] IP:  188(             1974400ns SUB         0064 [ fffb0000 00040000 00000000 ][ 00050000 00040000 00000000 ] =  [ fff60000 00000000 00000000 ])
7
// [CORE  0] IP:  189(             1974420ns SUB         0065 [ fffb0000 fffa0000 00000000 ][ 00050000 00040000 00000000 ] =  [ fff60000 fff60000 00000000 ])
8
// [CORE  0] IP:  190(             1974440ns SUB         0058 [ 00000000 00040000 00020000 ][ 00050000 00040000 00000000 ] =  [ fffb0000 00000000 00020000 ])
9
// [CORE  0] IP:  191(             1974480ns CROSS       0059 [ fffee6b0 fffe5a08 ffffb9ac ][ fff60000 fff60000 00000000 ] =  [ fffea05c 00015fa4 fffd40b8 ])
10
// [CORE  0] IP:  192(             1974520ns CROSS       005a [ fffb0000 00000000 00020000 ][ fff60000 00000000 00000000 ] =  [ 00000000 fff60000 00000000 ])
11
// [CORE  0] IP:  193(             1974570ns DOT         0069 [ 00000000 fff60000 00000000 ][ fff60000 fff60000 00000000 ] =  [ 00320000 00320000 00320000 ])
12
// [CORE  0] IP:  194(             1974620ns DOT         0047 [ fffea05c 00015fa4 fffd40b8 ][ fffb0000 00000000 00020000 ] =  [ 0000afd2 0000afd2 0000afd2 ])
13
// [CORE  0] IP:  195(             1974640ns XCHANGEY    0069 [ 00320000 00320000 00320000 ][ 0000afd2 0000afd2 0000afd2 ] =  [ 00320000 0000afd2 00320000 ])
14
// [CORE  0] IP:  196(             1974690ns DOT         0047 [ 00000000 fff60000 00000000 ][ fffee6b0 fffe5a08 ffffb9ac ] =  [ 00083dd8 00083dd8 00083dd8 ])
15
// [CORE  0] IP:  197(             1974710ns XCHANGEZ    0069 [ 00320000 0000afd2 00320000 ][ 00083dd8 00083dd8 00083dd8 ] =  [ 00320000 0000afd2 00083dd8 ])
16
// [CORE  0] IP:  198(             1974760ns DOT         0066 [ fffea05c 00015fa4 fffd40b8 ][ fff60000 00000000 00000000 ] =  [ 0006de34 0006de34 0006de34 ])
17
// [CORE  0] IP:  199(             1975420ns DIV         0063 [ 00320000 0000afd2 00083dd8 ][ 0006de34 0006de34 0006de34 ] =  [ 000e8f71 00003333 00026666 ])
18
// [CORE  0] IP:  200(             1975440ns JGEY        00ca [ 000e8f71 00003333 00026666 ][ 00000000 00000000 00000000 ] =  [ 00000000 00000000 00000000 ])
19
// [CORE  0] IP:  203(             1975460ns JGEZ        00cd [ 000e8f71 00003333 00026666 ][ 00000000 00000000 00000000 ] =  [ 00000000 00000000 00000000 ])
20
// [CORE  0] IP:  206(             1975480ns COPY        0047 [ 000e8f71 00003333 00026666 ][ 00000000 00020000 00000009 ] =  [ 000e8f71 00003333 00026666 ])
21
// [CORE  0] IP:  207(             1975500ns SWIZZLE3D   0047 [ 00000002 00000000 00000000 ][ 000e8f71 00003333 00026666 ] =  [ 00026666 00026666 00026666 ])
22
// [CORE  0] IP:  208(             1975520ns ADD         0048 [ 00026666 00026666 00026666 ][ 000e8f71 00003333 00026666 ] =  [ 0010f5d7 00029999 0004cccc ])
23
// [CORE  0] IP:  209(             1975540ns JLEY        00d3 [ 0010f5d7 00029999 0004cccc ][ 00000000 00020000 00000000 ] =  [ 00000000 00000000 00000000 ])
24
// [CORE  0] IP:  210(             1975560ns NOP         0000 [ 00000000 00020000 00000009 ][ 00000000 00020000 00000009 ] =  [ 00000000 00000000 00000000 ])
25
// [CORE  0] IP:  211(             1975580ns RET         0076 [ 00000000 00000000 00000000 ][ 00000000 00000000 00000000 ] =  [ 00000000 00000000 00000000 ])
26
// [CORE  0] IP:   44(             1975620ns NOP         0000 [ 00000000 00020000 00000009 ][ 00000000 00020000 00000009 ] =  [ 00000000 00000000 00000000 ])
27
// [CORE  0] IP:   45(             1975640ns JEQX        002e [ 00000000 00000000 00000000 ][ 00000000 00000000 00000000 ] =  [ 00000000 00000000 00000000 ])
28
// [CORE  0] IP:   47(             1975660ns DEC         007b [ 00020000 fffe0000 fffe0000 ][ 00000000 00020000 00000009 ] =  [ 00000000 fffc0000 fffc0000 ])
29
// [CORE  0] IP:   48(             1975680ns JEQX        0031 [ 00000000 fffc0000 fffc0000 ][ 00000000 00000000 00000000 ] =  [ 00000000 00000000 00000000 ])
30
// [CORE  0] IP:   50(             1975700ns JEQX        003d [ 00000000 00000000 00000000 ][ 00000000 00000000 00000000 ] =  [ 00000000 00000000 00000000 ])
31
// [CORE  0] IP:   62(             1975720ns NOP         0000 [ 00000000 00020000 00000009 ][ 00000000 00020000 00000009 ] =  [ 00000000 00000000 00000000 ])
32
// [CORE  0] IP:   63(             1975740ns CALL        013a [ 00000000 00000000 00000000 ][ xxxxxxxx xxxxxxxx xxxxxxxx ] =  [ 00000000 00000000 00000000 ])
33
// [CORE  0] IP:  315(             1975780ns OMWRITE     0080 [ 00000000 00000001 00000002 ][ 00000000 00000000 00000000 ] =  [ 00000000 00000000 00000000 ])
34
// [CORE  0] IP:  316(             1975800ns NOP         0000 [ 00000000 00020000 00000009 ][ 00000000 00020000 00000009 ] =  [ 00000000 00000000 00000000 ])
35
// [CORE  0] IP:  317(             1975820ns RET         0076 [ 00000001 00000000 00000000 ][ 00000000 00000000 00000000 ] =  [ 00000001 00000000 00000000 ])
36
// [CORE  0] IP:   64(             1975860ns NOP         0000 [ 00000000 00020000 00000009 ][ 00000000 00020000 00000009 ] =  [ 00000000 00000000 00000000 ])
37
// [CORE  0] IP:   65(             1975880ns CALL        0051 [ 00000000 00000000 00000000 ][ xxxxxxxx xxxxxxxx xxxxxxxx ] =  [ 00000000 00000000 00000000 ])
38
// [CORE  0] IP:   82(             1975900ns COPY        007b [ 00000002 00140000 00000000 ][ 00000000 00020000 00000009 ] =  [ 00000002 00140000 00000000 ])
39
// [CORE  0] IP:   83(             1975920ns ZERO        006e [ 00000000 00020000 00000009 ][ 00000000 00020000 00000009 ] =  [ 00000000 00000000 00000000 ])
40
// [CORE  0] IP:   84(             1975940ns SETX        006e [ 00060000 00000000 00000000 ][ 00000000 00000000 00000000 ] =  [ 00060000 00000000 00000000 ])
41
// [CORE  0] IP:   85(             1975960ns ADD         0078 [ 00000000 00000001 00000002 ][ 00000003 00000003 00000003 ] =  [ 00000003 00000004 00000005 ])
42
// [CORE  0] IP:   86(             1975980ns ADD         006c [ 00000000 00000000 00000000 ][ 00000003 00000003 00000003 ] =  [ 00000003 00000003 00000003 ])
43
// [CORE  0] IP:   87(             1976000ns COPY        0083 [ 00000003 00000003 00000003 ][ 00000000 00020000 00000009 ] =  [ 00000003 00000003 00000003 ])
44
// [CORE  0] IP:   88(             1976020ns JGEX        005a [ 00000000 00000000 00000000 ][ 018e0000 00620000 fffe0000 ] =  [ 00000000 00000000 00000000 ])
45
// [CORE  0] IP:   89(             1976040ns INCX        006f [ 00000000 00000000 00000000 ][ 00000000 00020000 00000009 ] =  [ 00020000 00000000 00000000 ])
46
// [CORE  0] IP:   90(             1976060ns RET         0076 [ 00000000 00000000 00000000 ][ 00000001 00000000 00000000 ] =  [ 00000000 00000000 00000000 ])
47
// [CORE  0] IP:   66(             1976100ns NOP         0000 [ 00000000 00020000 00000009 ][ 00000000 00020000 00000009 ] =  [ 00000000 00000000 00000000 ])
48
// [CORE  0] IP:   67(             1976120ns JNEX        0044 [ 00000000 00000000 00000000 ][ 00000000 00000000 00000000 ] =  [ 00000000 00000000 00000000 ])
49
// [CORE  0] IP:   67(             1976140ns RETURN      0000 [ 00000001 00000000 00000000 ][ 00000000 00020000 00000009 ] =
50
 
51
 
52
 // [ 00000001 00000001 00000001 ])
53
 
54
 
55
 
56
 
57
#define CameraPosition          r51
58
#define ProjectionWindowScale   r52
59
#define ProjectionWindowMin     r53
60
#define RayDirection            r54
61
#define PrimitiveCount          r55
62
#define MaxPrimitives           r56
63
#define Pixel2DPosition         r57
64
#define Last_t                  r58
65
#define PixelColor              r59
66
#define PixelPosition           r60
67
#define InitialPosition         r61
68
#define Three                   r62
69
//#define CurrentOutputPixel      r64
70
//#define CurrentTextureColor     r65
71
#define V0                                              r68
72
#define V1                                              r69
73
#define V2                                              r60
74
//#define TextureColor                  r61
75
#define LastColumn                              r62
76
#define Pixel2DFinalPosition    r63
77
 
78
#macro C = DotProduct( A, B )
79
        R47 = A * B;
80
        R47.x = R47.xxx + R47.yyy;
81
        C = R47.xxx + R47.zzz;
82
#endmacro
83
 
84
#macro C = CrossProduct( A, B )
85
        R47 = A.yzx * B.zxy;
86
        R48 = A.zxy * B.yzx;
87
        C = R47 - R48;
88
#endmacro
89
 
90
 
91
//Specifiy that the code is using scaled fixed point arithmetic by default
92
using fixed_point_arithmetic;
93
 
94
ProjectionWindowScale   = 0x0000147a;
95
 
96
Pixel2DPosition                 = 0;
97
ProjectionWindowMin             = 0xfff80000;
98
ProjectionWindowMin.z   = 0;
99
 
100
CameraPosition = (0,0x00040000,0x00020000);
101
MaxPrimitives  = 2;
102
PrimitiveCount = 2;
103
LastColumn = 10;
104
 
105
V1 = (0xfffb0000, 0x00040000, 0x00000000 );
106
 
107
V0 = (0x00050000, 0x00040000,0x00000000 );
108
 
109
V2 = (0xfffb0000, 0xfffa0000,0x00000000 );
110
 
111
 
112
        Pixel2DFinalPosition.x = 255;
113
        Pixel2DFinalPosition.y = 255;
114
        Pixel2DFinalPosition.z = 255;
115
 
116
//----------------------------------------------------------
117
function main()
118
 {
119
        vector Hit,AllDone;
120
        vector CurrentOutputPixel = (0,1,2);
121
        vector CurrentTextureColor = (0xa,0xb,0xc);
122
 
123
        //Make sure GenerateRay is only called once
124
         if ( PrimitiveCount == MaxPrimitives )
125
         {
126
                 GenerateRay();
127
                 Hit = 0;
128
         }
129
        Hit = CalculateBaricentricIntersection();
130
 
131
        PrimitiveCount--;
132
         if ( PrimitiveCount == 0 )      {      exit ;  }
133
 
134
         if (Hit != 0)
135
         {
136
                TextureCalculation();
137
                PrePixelShader();
138
         }
139
 
140
        PixelShader( CurrentOutputPixel, CurrentTextureColor );
141
        GenerateNextPixel();
142
 
143
         exit ;
144
}
145
 
146
//----------------------------------------------------------
147
function GenerateRay()
148
{
149
                vector UnnormalizedDirection, tmp;
150
 
151
                UnnormalizedDirection = (ProjectionWindowMin + Pixel2DPosition * ProjectionWindowScale  ) - CameraPosition;
152
                tmp = UnnormalizedDirection * UnnormalizedDirection;            //tmp = (x^2,y^2,z^2)
153
                RayDirection = UnnormalizedDirection / sqrt( tmp.xxx + tmp.yyy + tmp.zzz );
154
 
155
 
156
         return ;
157
 
158
}
159
//---------------------------------------------------------------------
160
function CalculateBaricentricIntersection()
161
{
162
        vector E1,E2,T,P,Q,H;
163
        vector Delta,t;
164
 
165
        PixelColor = 0;
166
        T.y = 1;
167
        E1 = V1 - V0;
168
        E2 = V2 - V0;
169
        T = CameraPosition - V0;
170
        P = CrossProduct( RayDirection, E2 );
171
        Q = CrossProduct( T, E1 );
172
        H.x = DotProduct(Q,E2);
173
        H.y = DotProduct(P,T);
174
        H.z = DotProduct( Q, RayDirection );
175
        Delta = DotProduct( P, E1 );
176
        t = H / Delta;
177
 
178
        vector ExpectedResult = (0x000e8f71, 0x00003333, 0x00026666);
179
        if ( t != ExpectedResult)
180
        {
181
                R66 = 0xdead;
182
                exit ;
183
        } else {
184
                R66 = 0xaced;
185
        }
186
 
187
         if (t.yyy >= 0)
188
         {
189
                 E2.y = E1.zzz + E1;
190
                 if (E2.yyy > T.yyy)
191
                 { return 0; }
192
 
193
         } else {
194
                 return 0;
195
        }
196
 
197
        return 1;
198
}
199
//---------------------------------------------------------------------
200
function PixelShader( CurrentOutputPixel, CurrentTextureColor )
201
{
202
        //CurrentOutputPixel = CurrentTextureColor;  // What the hell?????
203
        out [ CurrentOutputPixel ] = CurrentTextureColor.xyz;
204
        return ;
205
}
206
//---------------------------------------------------------------------
207
function GenerateNextPixel( CurrentOutputPixel, CurrentTextureColor )
208
{
209
         PrimitiveCount = MaxPrimitives;
210
         CurrentTextureColor = 0;
211
         CurrentOutputPixel += 3;
212
 
213
 
214
         if (Pixel2DPosition.xxx >= LastColumn.xxx )
215
         {
216
                 Pixel2DPosition.x++;
217
                 return 0;
218
         } else {
219
                 Pixel2DPosition.x = 0;
220
                 Pixel2DPosition.y++;
221
                 if (Pixel2DPosition.yyy == Pixel2DFinalPosition.yyy)
222
                 {
223
                         return 1;
224
                 } else {
225
                         return 0;
226
                 }
227
 
228
         }
229
}
230
//---------------------------------------------------------------------
231
//Do this calculation only if this triangle is the one closest to the camera
232
function TextureCalculation()
233
{
234
         vector uv_coordinate, fuv, uv1, uv2;
235
        // vector w1,w2,w3,w4;
236
 
237
        // //u_coordinate = U0 + last_u * (U1 - U0) + last_v * (U2 - U0);
238
        // //v_coordinate = V0 + last_u * (V1 - V0) + last_v * (V2 - V0);
239
         uv_coordinate = UV0 + last_uv.xxx * (UV1 - UV0) + last_uv.yyy * (UV2 - UV0);
240
 
241
        // //fu = (u_coordinate) * gTexture.mWidth
242
        // //fv = (v_coordinate) * gTexture.mWidth
243
        fuv.x  = (uv_coordinate) * gTextureSize.xxx;
244
 
245
        // //u1 = ((int)fu) % gTexture.mWidth
246
        // //v1 = ((int)fv) % gTexture.mHeight
247
        uv1 = integer( fuv ) %  gTextureSize;
248
 
249
        // //u2 = (u1 + 1 ) % gTexture.mWidth
250
        // //v2 = (v2 + 1 ) % gTexture.mHeight
251
        uv2 = (uv1 + 1) % gTextureSize;
252
 
253
        // //Cool now we should store the values in the appropiate registers
254
        // //TextureOutputCoord1.x = u1 + v1 * gTexture.mWidth
255
        // //TextureOutputCoord1.y = u2 + v1 * gTexture.mWidth
256
        // //TextureOutputCoord1.z = 0
257
        // //TextureOutputCoord2.x = u1 + v2 * gTexture.mWidth
258
        // //TextureOutputCoord2.y = u2 + v2 * gTexture.mWidth
259
        // //TextureOutputCoord2.z = 0
260
 
261
        // TextureOutputCoord1.x = uv1.xxx + uv1.yyy * gTextureSize.xxx;
262
        // TextureOutputCoord1.y = uv2.xxx + uv1.yyy * gTextureSize.xxx;
263
        // TextureOutputCoord1.z = 0;
264
 
265
        // TextureOutputCoord2.x = uv1.xxx + uv2.yyy * gTextureSize.xxx;
266
        // TextureOutputCoord2.y = uv2.xxx + uv2.yyy * gTextureSize.xxx;
267
        // TextureOutputCoord2.z = 0;
268
 
269
        // //Cool now get the weights
270
        // //w1.xyz = (1 - fracu) * (1 - fracv)
271
        // //w2.xyz = fracu * (1 - fracv)
272
        // //w3.xyz = (1 - fracu) * fracv
273
        // //w4.xyz = fracu *  fracv
274
         vector ones = (1,1,1);
275
         vector fracuv;
276
 
277
         fracuv = fraction( fuv );
278
 
279
         w1 = ones - fracuv;
280
         w2 = fracuv * w1.yxz;
281
         w3 = w2.yyy;
282
         w2 = w2.xxx;
283
         w4 = fracuv.xxx * fracuv.yyy;
284
 
285
        // //All done, let's get out of here
286
        return ;
287
 
288
}
289
//---------------------------------------------------------------------
290
function PrePixelShader()
291
{
292
        return ;
293
}
294
//---------------------------------------------------------------------

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.