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