1//
2//------------------------------------------------------------
3// Copyright(c) 2009-2010 by Digital Media Professionals Inc.
4// All rights reserved.
5//------------------------------------------------------------
6// This source code is the confidential and proprietary
7// of Digital Media Professionals Inc.
8//------------------------------------------------------------
9//
10
11// Input registers map
12#define aPosition       v0
13#define aColor          v1
14#define aTexCoord       v2
15
16// Output registers map
17#define vPosition       o0
18#define vQuaternion     o1
19#define vView           o2
20#define vTexCoord       o3
21
22// Constant registers map
23#define MATRIX_Proj         c0
24#define MATRIX_Proj0        c0
25#define MATRIX_Proj1        c1
26#define MATRIX_Proj2        c2
27#define MATRIX_Proj3        c3
28
29#define MATRIX_ModelView    c4
30#define MATRIX_ModelView0   c4
31#define MATRIX_ModelView00  c4
32#define MATRIX_ModelView01  c5
33#define MATRIX_ModelView02  c6
34#define MATRIX_ModelView03  c7
35
36// Temporary registers map
37#define TEMP0               r0
38#define TEMP1               r1
39#define TEMP2               r2
40#define TEMP3               r3
41#define TEMP4               r4
42
43#define TEMP_TEX0           r10
44#define TEMP_TEX1           r11
45#define TEMP_TEX2           r12
46#define TEMP_TEX3           r13
47#define TEMP_TANG           r13
48#define TEMP_NORM           r14
49#define TEMP_VIEW           r15
50#define TEMP_POS            r12
51
52// Constant registers
53#define CONSTANT            c93
54def     CONSTANT[0], 0.0, 1.0, 2.0, 3.0
55def     CONSTANT[1], 0.125, 0.00390625, 0.5, 0.25
56#define CONST_0                 CONSTANT[0].x
57#define CONST_1                 CONSTANT[0].y
58#define CONST_2                 CONSTANT[0].z
59#define CONST_3                 CONSTANT[0].w
60#define CONST_HALF              CONSTANT[1].z
61#define CONST_QUARTER           CONSTANT[1].w
62#define CONST_1_0               CONSTANT[0].yx
63#define CONST_1__4              CONSTANT[1].w
64#define CONST_1__8              CONSTANT[1].x
65#define CONST_1__256            CONSTANT[1].y
66
67#pragma bind_symbol(aPosition.xyzw,v0,v0)
68#pragma bind_symbol(aColor.xyzw,v1,v1)
69#pragma bind_symbol(aTexCoord.xyz,v2,v2)
70
71#pragma output_map (position, o0)
72#pragma output_map (color, o1)
73#pragma output_map (texture0, o2.xyz)
74
75#pragma bind_symbol(uProjection,c0,c3)
76#pragma bind_symbol(uModelView,c4,c7)
77
78l_position:
79    m4x4    TEMP_VIEW,          aPosition,          MATRIX_ModelView
80    mov     TEMP_POS,           MATRIX_Proj2
81    add     TEMP_POS,           TEMP_POS,           MATRIX_Proj3
82    mul     TEMP_POS,           TEMP_POS,           -CONST_HALF
83    dp4     vPosition.x,        TEMP_VIEW,          MATRIX_Proj0
84    dp4     vPosition.y,        TEMP_VIEW,          MATRIX_Proj1
85    dp4     vPosition.z,        TEMP_VIEW,          TEMP_POS
86    dp4     vPosition.w,        TEMP_VIEW,          MATRIX_Proj3
87    ret
88    nop
89
90main:
91    call    l_position
92    mov     o1, aColor
93    mov     o2, aTexCoord.xyxy
94    end
95endmain:
96
97