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
15// Output registers map
16#define vPosition		o0
17#define vQuaternion		o1
18#define vView			o2
19#define vTexCoord		o3
20
21// Constant registers map
22#define MATRIX_ModelView	c0
23#define MATRIX_ModelView0	c0
24#define MATRIX_ModelView00	c0
25#define MATRIX_ModelView01	c1
26#define MATRIX_ModelView02	c2
27#define MATRIX_ModelView03	c3
28
29#define MATRIX_Proj			c4
30#define MATRIX_Proj0		c4
31#define MATRIX_Proj1		c5
32#define MATRIX_Proj2		c6
33#define MATRIX_Proj3		c7
34
35// Temporary registers map
36#define TEMP0				r0
37#define TEMP1				r1
38#define TEMP2				r2
39#define TEMP3				r3
40#define TEMP4				r4
41
42#define TEMP_TEX0			r10
43#define TEMP_TEX1			r11
44#define TEMP_TEX2			r12
45#define TEMP_TEX3			r13
46#define TEMP_TANG			r13
47#define TEMP_NORM			r14
48#define TEMP_VIEW			r15
49#define TEMP_POS			r12
50
51// Constant registers
52#define CONSTANT			c93
53def		CONSTANT[0], 0.0, 1.0, 2.0, 3.0
54def		CONSTANT[1], 0.125, 0.00390625, 0.5, 0.25
55#define CONST_0					CONSTANT[0].x
56#define CONST_1					CONSTANT[0].y
57#define CONST_2					CONSTANT[0].z
58#define CONST_3					CONSTANT[0].w
59#define CONST_HALF				CONSTANT[1].z
60#define CONST_QUARTER			CONSTANT[1].w
61#define CONST_1_0				CONSTANT[0].yx
62#define CONST_1__4				CONSTANT[1].w
63#define CONST_1__8				CONSTANT[1].x
64#define CONST_1__256			CONSTANT[1].y
65
66#pragma bind_symbol(aPosition.xyzw,v0,v0)
67#pragma bind_symbol(aColor.xyzw,v1,v1)
68
69#pragma output_map (position, o0)
70#pragma output_map (color,    o1)
71
72#pragma bind_symbol(uProjection,c0,c3)
73#pragma bind_symbol(uModelView,c4,c7)
74
75l_position:
76    m4x4    TEMP_VIEW,          aPosition,          MATRIX_ModelView
77    mov     TEMP_POS,           MATRIX_Proj2
78    add     TEMP_POS,           TEMP_POS,           MATRIX_Proj3
79    mul     TEMP_POS,           TEMP_POS,           -CONST_HALF
80    dp4     vPosition.x,        TEMP_VIEW,          MATRIX_Proj0
81    dp4     vPosition.y,        TEMP_VIEW,          MATRIX_Proj1
82    dp4     vPosition.z,        TEMP_VIEW,          TEMP_POS
83    dp4     vPosition.w,        TEMP_VIEW,          MATRIX_Proj3
84    ret
85    nop
86
87main:
88	call	l_position
89	mov		o1, aColor
90	end
91endmain:
92