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 aTexCoord       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_Proj         c0
23#define MATRIX_Proj0        c0
24#define MATRIX_Proj1        c1
25#define MATRIX_Proj2        c2
26#define MATRIX_Proj3        c3
27
28#define MATRIX_ModelView    c4
29#define MATRIX_ModelView0   c4
30#define MATRIX_ModelView00  c4
31#define MATRIX_ModelView01  c5
32#define MATRIX_ModelView02  c6
33#define MATRIX_ModelView03  c7
34
35#define CONST               c95     // 0.0 0.5 1.0 3.0
36#define CONSTANT            c93
37def     CONSTANT[0], 0.0, 1.0, 2.0, 3.0
38def     CONSTANT[1], 0.125, 0.00390625, 0.5, 0.25
39#define CONST_0                 CONSTANT[0].x
40#define CONST_1                 CONSTANT[0].y
41#define CONST_2                 CONSTANT[0].z
42#define CONST_3                 CONSTANT[0].w
43#define CONST_HALF              CONSTANT[1].z
44#define CONST_QUARTER           CONSTANT[1].w
45#define CONST_1_0               CONSTANT[0].yx
46#define CONST_1__4              CONSTANT[1].w
47#define CONST_1__8              CONSTANT[1].x
48#define CONST_1__256            CONSTANT[1].y
49
50// Temporary registers map
51#define TEMP_VIEW           r15
52#define TEMP_POS            r12
53
54#pragma bind_symbol(aPosition.xyzw,v0,v0)
55#pragma bind_symbol(aTexCoord.xy,v1,v1)
56
57#pragma output_map (position, o0)
58#pragma output_map (texture0, o1.xyz)
59
60#pragma bind_symbol(uProjection,c0,c3)
61#pragma bind_symbol(uModelView,c4,c7)
62
63l_position:
64    m4x4    TEMP_VIEW,          aPosition,          MATRIX_ModelView
65    mov     TEMP_POS,           MATRIX_Proj2
66    add     TEMP_POS,           TEMP_POS,           MATRIX_Proj3
67    mul     TEMP_POS,           TEMP_POS,           -CONST_HALF
68    dp4     vPosition.x,        TEMP_VIEW,          MATRIX_Proj0
69    dp4     vPosition.y,        TEMP_VIEW,          MATRIX_Proj1
70    dp4     vPosition.z,        TEMP_VIEW,          TEMP_POS
71    dp4     vPosition.w,        TEMP_VIEW,          MATRIX_Proj3
72    ret
73    nop
74
75main:
76    call    l_position
77    mov     o1, aTexCoord.xyxy
78    end
79endmain:
80