annotate win32/directx/d3dx10math.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
1 /***********************************************************************\
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
2 * d3dx10math.d *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
3 * *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
4 * Windows API header module *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
5 * *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
6 * Placed into public domain *
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
7 \***********************************************************************/
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
8 module win32.directx.d3dx10math;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
9
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
10 version(Tango) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
11 import tango.math.Math;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
12 alias sqrt sqrtf;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
13 } else {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
14 import std.c.math;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
15 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
16
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
17 private import win32.windows;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
18 private import win32.directx.d3dx10;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
19
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
20 struct D3DVECTOR {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
21 float x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
22 float y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
23 float z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
24 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
25
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
26 struct D3DMATRIX {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
27 union {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
28 struct {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
29 float _11, _12, _13, _14;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
30 float _21, _22, _23, _24;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
31 float _31, _32, _33, _34;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
32 float _41, _42, _43, _44;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
33 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
34 float[4][4] m;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
35 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
36 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
37
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
38 const D3DX_PI = 3.14159265358979323846;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
39 const D3DX_1BYPI = 1.0 / D3DX_PI;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
40
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
41 float D3DXToRadian(float degree) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
42 return degree * (D3DX_PI / 180.0);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
43 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
44
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
45 float D3DXToDegree(float radian) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
46 return radian * (180.0 / D3DX_PI);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
47 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
48
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
49 const D3DX_16F_DIG = 3;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
50 const D3DX_16F_EPSILON = 4.8875809e-4f;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
51 const D3DX_16F_MANT_DIG = 11;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
52 const D3DX_16F_MAX = 6.550400e+004;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
53 const D3DX_16F_MAX_10_EXP = 4;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
54 const D3DX_16F_MAX_EXP = 15;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
55 const D3DX_16F_MIN = 6.1035156e-5f;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
56 const D3DX_16F_MIN_10_EXP = -4;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
57 const D3DX_16F_MIN_EXP = -14;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
58 const D3DX_16F_RADIX = 2;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
59 const D3DX_16F_ROUNDS = 1;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
60 const D3DX_16F_SIGN_MASK = 0x8000;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
61 const D3DX_16F_EXP_MASK = 0x7C00;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
62 const D3DX_16F_FRAC_MASK = 0x03FF;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
63
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
64 struct D3DXFLOAT16 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
65 //TODO
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
66 protected:
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
67 WORD value;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
68 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
69
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
70 struct D3DXVECTOR2 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
71 //TODO
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
72 float x, y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
73 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
74
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
75 struct D3DXVECTOR2_16F {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
76 //TODO
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
77 D3DXFLOAT16 x, y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
78 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
79
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
80 struct D3DXVECTOR3 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
81 //TODO
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
82 float x, y, z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
83 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
84
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
85 struct D3DXVECTOR3_16F {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
86 //TODO
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
87 D3DXFLOAT16 x, y, z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
88 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
89
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
90 struct D3DXVECTOR4 {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
91 //TODO
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
92 float x, y, z, w;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
93 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
94
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
95 struct D3DXVECTOR4_16F {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
96 //TODO
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
97 D3DXFLOAT16 x, y, z, w;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
98 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
99
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
100 struct D3DXMATRIX {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
101 //TODO
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
102 union {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
103 struct {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
104 float _11, _12, _13, _14;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
105 float _21, _22, _23, _24;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
106 float _31, _32, _33, _34;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
107 float _41, _42, _43, _44;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
108 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
109 float[4][4] m;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
110 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
111 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
112
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
113 //TODO struct _D3DXMATRIXA16 : D3DXMATRIX
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
114
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
115 struct D3DXQUATERNION {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
116 //TODO
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
117 float x, y, z, w;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
118 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
119
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
120 struct D3DXPLANE {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
121 //TODO
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
122 float a, b, c, d;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
123 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
124
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
125 struct D3DXCOLOR {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
126 //TODO
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
127 float r, g, b, a;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
128 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
129
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
130 extern(Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
131 D3DXFLOAT16* D3DXFloat32To16Array(D3DXFLOAT16* pOut, float* pIn, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
132 float* D3DXFloat16To32Array(float* pOut, D3DXFLOAT16* pIn, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
133 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
134
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
135 float D3DXVec2Length(D3DXVECTOR2* pV) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
136 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
137 if (pV is null) return 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
138 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
139 return sqrtf((pV.x * pV.x) + (pV.y * pV.y));
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
140 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
141
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
142 float D3DXVec2LengthSq(D3DXVECTOR2* pV) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
143 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
144 if (pV is null) return 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
145 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
146 return (pV.x * pV.x) + (pV.y * pV.y);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
147 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
148
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
149 float D3DXVec2Dot(D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
150 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
151 if ((pV1 is null) || (pV2 is null)) return 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
152 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
153 return (pV1.x * pV2.x) + (pV1.y * pV2.y);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
154 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
155
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
156 float D3DXVec2CCW(D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
157 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
158 if ((pV1 is null) || (pV2 is null)) return 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
159 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
160 return (pV1.x * pV2.y) + (pV1.y * pV2.x);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
161 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
162
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
163 D3DXVECTOR2* D3DXVec2Add(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
164 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
165 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
166 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
167 pOut.x = pV1.x + pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
168 pOut.y = pV1.y + pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
169 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
170 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
171
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
172 D3DXVECTOR2* D3DXVec2Subtract(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
173 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
174 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
175 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
176 pOut.x = pV1.x - pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
177 pOut.y = pV1.y - pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
178 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
179 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
180
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
181 D3DXVECTOR2* D3DXVec2Minimize(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
182 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
183 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
184 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
185 pOut.x = pV1.x < pV2.x ? pV1.x : pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
186 pOut.y = pV1.y < pV2.y ? pV1.y : pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
187 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
188 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
189
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
190 D3DXVECTOR2* D3DXVec2Maximize(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
191 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
192 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
193 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
194 pOut.x = pV1.x > pV2.x ? pV1.x : pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
195 pOut.y = pV1.y > pV2.y ? pV1.y : pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
196 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
197 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
198
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
199 D3DXVECTOR2* D3DXVec2Scale(D3DXVECTOR2* pOut, D3DXVECTOR2* pV, float s) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
200 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
201 if ((pOut is null) || (pV is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
202 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
203 pOut.x = pV.x * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
204 pOut.y = pV.y * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
205 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
206 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
207
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
208 D3DXVECTOR2* D3DXVec2Lerp(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2, float s) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
209 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
210 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
211 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
212 pOut.x = pV1.x + s * (pV2.x - pV1.x);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
213 pOut.y = pV1.y + s * (pV2.y - pV1.y);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
214 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
215 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
216
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
217 extern(Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
218 D3DXVECTOR2* D3DXVec2Normalize(D3DXVECTOR2* pOut, D3DXVECTOR2* pV);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
219 D3DXVECTOR2* D3DXVec2Hermite(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pT1, D3DXVECTOR2* pV2, D3DXVECTOR2* pT2, float s);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
220 D3DXVECTOR2* D3DXVec2CatmullRom(D3DXVECTOR2* pOut, D3DXVECTOR2* pV0, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2, D3DXVECTOR2* pV3, float s);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
221 D3DXVECTOR2* D3DXVec2BaryCentric(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2, D3DXVECTOR2* pV3, float f, float g);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
222 D3DXVECTOR4* D3DXVec2Transform(D3DXVECTOR4* pOut, D3DXVECTOR2* pV, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
223 D3DXVECTOR2* D3DXVec2TransformCoord(D3DXVECTOR2* pOut, D3DXVECTOR2* pV, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
224 D3DXVECTOR2* D3DXVec2TransformNormal(D3DXVECTOR2* pOut, D3DXVECTOR2* pV, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
225 D3DXVECTOR4* D3DXVec2TransformArray(D3DXVECTOR4* pOut, UINT OutStride, D3DXVECTOR2* pV, UINT VStride, D3DXMATRIX* pM, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
226 D3DXVECTOR2* D3DXVec2TransformCoordArray(D3DXVECTOR2* pOut, UINT OutStride, D3DXVECTOR2* pV, UINT VStride, D3DXMATRIX* pM, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
227 D3DXVECTOR2* D3DXVec2TransformNormalArray(D3DXVECTOR2* pOut, UINT OutStride, D3DXVECTOR2* pV, UINT VStride, D3DXMATRIX* pM, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
228 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
229
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
230 float D3DXVec3Length(D3DXVECTOR3* pV) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
231 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
232 if (pV is null) return 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
233 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
234 return sqrtf((pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z));
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
235 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
236
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
237 float D3DXVec3LengthSq(D3DXVECTOR3* pV) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
238 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
239 if (pV is null) return 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
240 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
241 return (pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
242 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
243
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
244 float D3DXVec3Dot(D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
245 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
246 if ((pV1 is null) || (pV2 is null)) return 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
247 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
248 return (pV1.x * pV2.x) + (pV1.y * pV2.y) + (pV1.z * pV2.z);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
249 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
250
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
251 D3DXVECTOR3* D3DXVec3Cross(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
252 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
253 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
254 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
255 D3DXVECTOR3 v;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
256 v.x = (pV1.y * pV2.z) - (pV1.z * pV2.y);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
257 v.y = (pV1.z * pV2.x) - (pV1.x * pV2.z);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
258 v.z = (pV1.x * pV2.y) - (pV1.y * pV2.x);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
259 *pOut = v;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
260 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
261 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
262
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
263 D3DXVECTOR3* D3DXVec3Add(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
264 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
265 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
266 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
267 pOut.x = pV1.x + pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
268 pOut.y = pV1.y + pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
269 pOut.z = pV1.z + pV2.z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
270 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
271 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
272
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
273 D3DXVECTOR3* D3DXVec3Subtract(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
274 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
275 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
276 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
277 pOut.x = pV1.x - pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
278 pOut.y = pV1.y - pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
279 pOut.z = pV1.z - pV2.z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
280 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
281 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
282
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
283 D3DXVECTOR3* D3DXVec3Minimize(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
284 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
285 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
286 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
287 pOut.x = pV1.x < pV2.x ? pV1.x : pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
288 pOut.y = pV1.y < pV2.y ? pV1.y : pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
289 pOut.z = pV1.z < pV2.z ? pV1.z : pV2.z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
290 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
291 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
292
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
293 D3DXVECTOR3* D3DXVec3Maximize(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
294 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
295 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
296 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
297 pOut.x = pV1.x > pV2.x ? pV1.x : pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
298 pOut.y = pV1.y > pV2.y ? pV1.y : pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
299 pOut.z = pV1.z > pV2.z ? pV1.z : pV2.z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
300 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
301 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
302
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
303 D3DXVECTOR3* D3DXVec3Scale(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, float s) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
304 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
305 if ((pOut is null) || (pV is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
306 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
307 pOut.x = pV.x * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
308 pOut.y = pV.y * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
309 pOut.z = pV.z * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
310 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
311 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
312
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
313 D3DXVECTOR3* D3DXVec3Lerp(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, float s) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
314 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
315 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
316 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
317 pOut.x = pV1.x + s * (pV2.x - pV1.x);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
318 pOut.y = pV1.y + s * (pV2.y - pV1.y);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
319 pOut.z = pV1.z + s * (pV2.z - pV1.z);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
320 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
321 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
322
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
323 extern(Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
324 D3DXVECTOR3* D3DXVec3Normalize(D3DXVECTOR3* pOut, D3DXVECTOR3* pV);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
325 D3DXVECTOR3* D3DXVec3Hermite(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pT1, D3DXVECTOR3* pV2, D3DXVECTOR3* pT2, FLOAT s);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
326 D3DXVECTOR3* D3DXVec3CatmullRom(D3DXVECTOR3* pOut, D3DXVECTOR3* pV0, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, D3DXVECTOR3* pV3, FLOAT s);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
327 D3DXVECTOR3* D3DXVec3BaryCentric(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, D3DXVECTOR3* pV3, FLOAT f, FLOAT g);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
328 D3DXVECTOR4* D3DXVec3Transform(D3DXVECTOR4* pOut, D3DXVECTOR3* pV, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
329 D3DXVECTOR3* D3DXVec3TransformCoord(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
330 D3DXVECTOR3* D3DXVec3TransformNormal(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
331 D3DXVECTOR4* D3DXVec3TransformArray(D3DXVECTOR4* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3DXMATRIX* pM, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
332 D3DXVECTOR3* D3DXVec3TransformCoordArray(D3DXVECTOR3* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3DXMATRIX* pM, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
333 D3DXVECTOR3* D3DXVec3TransformNormalArray(D3DXVECTOR3* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3DXMATRIX* pM, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
334 D3DXVECTOR3* D3DXVec3Project(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
335 D3DXVECTOR3* D3DXVec3Unproject(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
336 D3DXVECTOR3* D3DXVec3ProjectArray(D3DXVECTOR3* pOut, UINT OutStride,D3DXVECTOR3* pV, UINT VStride,D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
337 D3DXVECTOR3* D3DXVec3UnprojectArray(D3DXVECTOR3* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
338 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
339
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
340 float D3DXVec4Length(D3DXVECTOR4* pV) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
341 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
342 if (pV is null) return 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
343 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
344 return sqrtf((pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z) + (pV.w * pV.w));
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
345 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
346
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
347 float D3DXVec4LengthSq(D3DXVECTOR4* pV) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
348 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
349 if (pV is null) return 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
350 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
351 return (pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z) + (pV.w * pV.w);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
352 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
353
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
354 float D3DXVec4Dot(D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
355 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
356 if ((pV1 is null) || (pV2 is null)) return 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
357 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
358 return (pV1.x * pV2.x) + (pV1.y * pV2.y) + (pV1.z * pV2.z) + (pV1.w * pV2.w);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
359 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
360
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
361 D3DXVECTOR4* D3DXVec4Add(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
362 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
363 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
364 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
365 pOut.x = pV1.x + pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
366 pOut.y = pV1.y + pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
367 pOut.z = pV1.z + pV2.z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
368 pOut.w = pV1.w + pV2.w;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
369 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
370 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
371
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
372 D3DXVECTOR4* D3DXVec4Subtract(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
373 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
374 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
375 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
376 pOut.x = pV1.x - pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
377 pOut.y = pV1.y - pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
378 pOut.z = pV1.z - pV2.z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
379 pOut.w = pV1.w - pV2.w;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
380 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
381 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
382
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
383 D3DXVECTOR4* D3DXVec4Minimize(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
384 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
385 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
386 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
387 pOut.x = pV1.x < pV2.x ? pV1.x : pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
388 pOut.y = pV1.y < pV2.y ? pV1.y : pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
389 pOut.z = pV1.z < pV2.z ? pV1.z : pV2.z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
390 pOut.w = pV1.w < pV2.w ? pV1.w : pV2.w;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
391 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
392 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
393
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
394 D3DXVECTOR4* D3DXVec4Maximize(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
395 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
396 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
397 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
398 pOut.x = pV1.x > pV2.x ? pV1.x : pV2.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
399 pOut.y = pV1.y > pV2.y ? pV1.y : pV2.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
400 pOut.z = pV1.z > pV2.z ? pV1.z : pV2.z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
401 pOut.w = pV1.w > pV2.w ? pV1.w : pV2.w;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
402 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
403 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
404
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
405 D3DXVECTOR4* D3DXVec4Scale(D3DXVECTOR4* pOut, D3DXVECTOR4* pV, float s) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
406 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
407 if ((pOut is null) || (pV is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
408 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
409 pOut.x = pV.x * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
410 pOut.y = pV.y * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
411 pOut.z = pV.z * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
412 pOut.w = pV.w * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
413 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
414 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
415
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
416 D3DXVECTOR4* D3DXVec4Lerp(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, float s) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
417 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
418 if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
419 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
420 pOut.x = pV1.x + s * (pV2.x - pV1.x);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
421 pOut.y = pV1.y + s * (pV2.y - pV1.y);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
422 pOut.z = pV1.z + s * (pV2.z - pV1.z);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
423 pOut.w = pV1.w + s * (pV2.w - pV1.w);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
424 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
425 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
426
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
427 extern(Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
428 D3DXVECTOR4* D3DXVec4Cross(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, D3DXVECTOR4* pV3);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
429 D3DXVECTOR4* D3DXVec4Normalize(D3DXVECTOR4* pOut, D3DXVECTOR4* pV);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
430 D3DXVECTOR4* D3DXVec4Hermite(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pT1, D3DXVECTOR4* pV2, D3DXVECTOR4* pT2, FLOAT s);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
431 D3DXVECTOR4* D3DXVec4CatmullRom(D3DXVECTOR4* pOut, D3DXVECTOR4* pV0, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, D3DXVECTOR4* pV3, FLOAT s);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
432 D3DXVECTOR4* D3DXVec4BaryCentric(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, D3DXVECTOR4* pV3, FLOAT f, FLOAT g);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
433 D3DXVECTOR4* D3DXVec4Transform(D3DXVECTOR4* pOut, D3DXVECTOR4* pV, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
434 D3DXVECTOR4* D3DXVec4TransformArray(D3DXVECTOR4* pOut, UINT OutStride, D3DXVECTOR4* pV, UINT VStride, D3DXMATRIX* pM, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
435 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
436
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
437 D3DXMATRIX* D3DXMatrixIdentity(D3DXMATRIX *pOut) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
438 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
439 if (pOut is null) return NULL;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
440 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
441 pOut.m[0][1] = pOut.m[0][2] = pOut.m[0][3] =
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
442 pOut.m[1][0] = pOut.m[1][2] = pOut.m[1][3] =
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
443 pOut.m[2][0] = pOut.m[2][1] = pOut.m[2][3] =
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
444 pOut.m[3][0] = pOut.m[3][1] = pOut.m[3][2] = 0.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
445 pOut.m[0][0] = pOut.m[1][1] = pOut.m[2][2] = pOut.m[3][3] = 1.0;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
446 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
447 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
448
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
449
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
450 BOOL D3DXMatrixIsIdentity(D3DXMATRIX *pM) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
451 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
452 if(pM is null) return FALSE;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
453 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
454 return (pM.m[0][0] == 1.0f) && (pM.m[0][1] == 0.0f) && (pM.m[0][2] == 0.0f) && (pM.m[0][3] == 0.0f) &&
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
455 (pM.m[1][0] == 0.0f) && (pM.m[1][1] == 1.0f) && (pM.m[1][2] == 0.0f) && (pM.m[1][3] == 0.0f) &&
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
456 (pM.m[2][0] == 0.0f) && (pM.m[2][1] == 0.0f) && (pM.m[2][2] == 1.0f) && (pM.m[2][3] == 0.0f) &&
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
457 (pM.m[3][0] == 0.0f) && (pM.m[3][1] == 0.0f) && (pM.m[3][2] == 0.0f) && (pM.m[3][3] == 1.0f);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
458 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
459
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
460 extern(Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
461 FLOAT D3DXMatrixDeterminant(D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
462 HRESULT D3DXMatrixDecompose(D3DXVECTOR3* pOutScale, D3DXQUATERNION* pOutRotation, D3DXVECTOR3* pOutTranslation, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
463 D3DXMATRIX* D3DXMatrixTranspose(D3DXMATRIX* pOut, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
464 D3DXMATRIX* D3DXMatrixMultiply(D3DXMATRIX* pOut, D3DXMATRIX* pM1, D3DXMATRIX* pM2);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
465 D3DXMATRIX* D3DXMatrixMultiplyTranspose(D3DXMATRIX* pOut, D3DXMATRIX* pM1, D3DXMATRIX* pM2);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
466 D3DXMATRIX* D3DXMatrixInverse(D3DXMATRIX* pOut, FLOAT* pDeterminant, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
467 D3DXMATRIX* D3DXMatrixScaling(D3DXMATRIX* pOut, FLOAT sx, FLOAT sy, FLOAT sz);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
468 D3DXMATRIX* D3DXMatrixTranslation(D3DXMATRIX* pOut, FLOAT x, FLOAT y, FLOAT z);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
469 D3DXMATRIX* D3DXMatrixRotationX(D3DXMATRIX* pOut, FLOAT Angle);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
470 D3DXMATRIX* D3DXMatrixRotationY(D3DXMATRIX* pOut, FLOAT Angle);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
471 D3DXMATRIX* D3DXMatrixRotationZ(D3DXMATRIX* pOut, FLOAT Angle);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
472 D3DXMATRIX* D3DXMatrixRotationAxis(D3DXMATRIX* pOut, D3DXVECTOR3* pV, FLOAT Angle);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
473 D3DXMATRIX* D3DXMatrixRotationQuaternion(D3DXMATRIX* pOut, D3DXQUATERNION* pQ);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
474 D3DXMATRIX* D3DXMatrixRotationYawPitchRoll(D3DXMATRIX* pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
475 D3DXMATRIX* D3DXMatrixTransformation(D3DXMATRIX* pOut, D3DXVECTOR3* pScalingCenter, D3DXQUATERNION* pScalingRotation, D3DXVECTOR3* pScaling, D3DXVECTOR3* pRotationCenter, D3DXQUATERNION* pRotation, D3DXVECTOR3* pTranslation);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
476 D3DXMATRIX* D3DXMatrixTransformation2D(D3DXMATRIX* pOut, D3DXVECTOR2* pScalingCenter, FLOAT ScalingRotation, D3DXVECTOR2* pScaling, D3DXVECTOR2* pRotationCenter, FLOAT Rotation, D3DXVECTOR2* pTranslation);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
477 D3DXMATRIX* D3DXMatrixAffineTransformation(D3DXMATRIX* pOut, FLOAT Scaling, D3DXVECTOR3* pRotationCenter, D3DXQUATERNION* pRotation, D3DXVECTOR3* pTranslation);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
478 D3DXMATRIX* D3DXMatrixAffineTransformation2D(D3DXMATRIX* pOut, FLOAT Scaling, D3DXVECTOR2* pRotationCenter, FLOAT Rotation, D3DXVECTOR2* pTranslation);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
479 D3DXMATRIX* D3DXMatrixLookAtRH(D3DXMATRIX* pOut, D3DXVECTOR3* pEye, D3DXVECTOR3* pAt, D3DXVECTOR3* pUp);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
480 D3DXMATRIX* D3DXMatrixLookAtLH(D3DXMATRIX* pOut, D3DXVECTOR3* pEye, D3DXVECTOR3* pAt, D3DXVECTOR3* pUp);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
481 D3DXMATRIX* D3DXMatrixPerspectiveRH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
482 D3DXMATRIX* D3DXMatrixPerspectiveLH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
483 D3DXMATRIX* D3DXMatrixPerspectiveFovRH(D3DXMATRIX* pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
484 D3DXMATRIX* D3DXMatrixPerspectiveFovLH(D3DXMATRIX* pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
485 D3DXMATRIX* D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
486 D3DXMATRIX* D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
487 D3DXMATRIX* D3DXMatrixOrthoRH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
488 D3DXMATRIX* D3DXMatrixOrthoLH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
489 D3DXMATRIX* D3DXMatrixOrthoOffCenterRH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
490 D3DXMATRIX* D3DXMatrixOrthoOffCenterLH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
491 D3DXMATRIX* D3DXMatrixShadow(D3DXMATRIX* pOut, D3DXVECTOR4* pLight, D3DXPLANE* pPlane);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
492 D3DXMATRIX* D3DXMatrixReflect(D3DXMATRIX* pOut, D3DXPLANE* pPlane);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
493 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
494
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
495 float D3DXQuaternionLength(D3DXQUATERNION *pQ) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
496 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
497 if (pQ is null) return 0.0f;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
498 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
499 return sqrtf((pQ.x * pQ.x) + (pQ.y * pQ.y) + (pQ.z * pQ.z) + (pQ.w * pQ.w));
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
500 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
501
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
502 float D3DXQuaternionLengthSq(D3DXQUATERNION *pQ) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
503 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
504 if(pQ is null) return 0.0f;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
505 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
506 return (pQ.x * pQ.x) + (pQ.y * pQ.y) + (pQ.z * pQ.z) + (pQ.w * pQ.w);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
507 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
508
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
509 float D3DXQuaternionDot(D3DXQUATERNION *pQ1, D3DXQUATERNION *pQ2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
510 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
511 if((pQ1 is null) || (pQ2 is null)) return 0.0f;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
512 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
513 return (pQ1.x * pQ2.x) + (pQ1.y * pQ2.y) + (pQ1.z * pQ2.z) + (pQ1.w * pQ2.w);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
514 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
515
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
516 D3DXQUATERNION* D3DXQuaternionIdentity(D3DXQUATERNION *pOut) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
517 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
518 if(pOut is null) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
519 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
520 pOut.x = pOut.y = pOut.z = 0.0f;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
521 pOut.w = 1.0f;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
522 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
523 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
524
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
525 bool D3DXQuaternionIsIdentity(D3DXQUATERNION *pQ) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
526 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
527 if(pQ is null) return false;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
528 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
529 return (pQ.x == 0.0f) && (pQ.y == 0.0f) && (pQ.z == 0.0f) && (pQ.w == 1.0f);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
530 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
531
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
532 D3DXQUATERNION* D3DXQuaternionConjugate(D3DXQUATERNION *pOut, D3DXQUATERNION *pQ) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
533 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
534 if((pOut is null) || (pQis is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
535 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
536 pOut.x = -pQ.x;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
537 pOut.y = -pQ.y;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
538 pOut.z = -pQ.z;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
539 pOut.w = pQ.w;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
540 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
541 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
542
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
543 extern(Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
544 void D3DXQuaternionToAxisAngle(D3DXQUATERNION* pQ, D3DXVECTOR3* pAxis, FLOAT* pAngle);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
545 D3DXQUATERNION* D3DXQuaternionRotationMatrix(D3DXQUATERNION* pOut, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
546 D3DXQUATERNION* D3DXQuaternionRotationAxis(D3DXQUATERNION* pOut, D3DXVECTOR3* pV, FLOAT Angle);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
547 D3DXQUATERNION* D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION* pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
548 D3DXQUATERNION* D3DXQuaternionMultiply(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
549 D3DXQUATERNION* D3DXQuaternionNormalize(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
550 D3DXQUATERNION* D3DXQuaternionInverse(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
551 D3DXQUATERNION* D3DXQuaternionLn(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
552 D3DXQUATERNION* D3DXQuaternionExp(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
553 D3DXQUATERNION* D3DXQuaternionSlerp(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2, FLOAT t);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
554 D3DXQUATERNION* D3DXQuaternionSquad(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pA, D3DXQUATERNION* pB, D3DXQUATERNION* pC, FLOAT t);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
555 void D3DXQuaternionSquadSetup(D3DXQUATERNION* pAOut, D3DXQUATERNION* pBOut, D3DXQUATERNION* pCOut, D3DXQUATERNION* pQ0, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2, D3DXQUATERNION* pQ3);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
556 D3DXQUATERNION* D3DXQuaternionBaryCentric(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2, D3DXQUATERNION* pQ3, FLOAT f, FLOAT g);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
557 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
558
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
559 float D3DXPlaneDot(D3DXPLANE *pP, D3DXVECTOR4 *pV) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
560 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
561 if((pP is null) || (pV is null)) return 0.0f;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
562 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
563 return (pP.a * pV.x) + (pP.b * pV.y) + (pP.c * pV.z) + (pP.d * pV.w);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
564 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
565
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
566 float D3DXPlaneDotCoord(D3DXPLANE *pP, D3DXVECTOR3 *pV) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
567 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
568 if((pP is null) || (pV is null)) return 0.0f;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
569 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
570 return (pP.a * pV.x) + (pP.b * pV.y) + (pP.c * pV.z) + pP.d;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
571 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
572
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
573 float D3DXPlaneDotNormal(D3DXPLANE *pP, D3DXVECTOR3 *pV) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
574 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
575 if((pP is null) || (pV is null)) return 0.0f;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
576 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
577 return (pP.a * pV.x) + (pP.b * pV.y) + (pP.c * pV.z);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
578 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
579
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
580 D3DXPLANE* D3DXPlaneScale(D3DXPLANE *pOut, D3DXPLANE *pP, float s) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
581 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
582 if((pOut is null) || (pP is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
583 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
584 pOut.a = pP.a * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
585 pOut.b = pP.b * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
586 pOut.c = pP.c * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
587 pOut.d = pP.d * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
588 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
589 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
590
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
591 extern(Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
592 D3DXPLANE* D3DXPlaneNormalize(D3DXPLANE* pOut, D3DXPLANE* pP);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
593 D3DXVECTOR3* D3DXPlaneIntersectLine(D3DXVECTOR3* pOut, D3DXPLANE* pP, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
594 D3DXPLANE* D3DXPlaneFromPointNormal(D3DXPLANE* pOut, D3DXVECTOR3* pPoint, D3DXVECTOR3* pNormal);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
595 D3DXPLANE* D3DXPlaneFromPoints(D3DXPLANE* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, D3DXVECTOR3* pV3);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
596 D3DXPLANE* D3DXPlaneTransform(D3DXPLANE* pOut, D3DXPLANE* pP, D3DXMATRIX* pM);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
597 D3DXPLANE* D3DXPlaneTransformArray(D3DXPLANE* pOut, UINT OutStride, D3DXPLANE* pP, UINT PStride, D3DXMATRIX* pM, UINT n);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
598 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
599
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
600 D3DXCOLOR* D3DXColorNegative(D3DXCOLOR* pOut, D3DXCOLOR* pC) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
601 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
602 if((pOut is null) || (pC is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
603 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
604 pOut.r = 1.0f - pC.r;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
605 pOut.g = 1.0f - pC.g;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
606 pOut.b = 1.0f - pC.b;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
607 pOut.a = pC.a;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
608 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
609 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
610
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
611 D3DXCOLOR* D3DXColorAdd(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
612 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
613 if((pOut is null) || (pC1 is null) || (pC2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
614 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
615 pOut.r = pC1.r + pC2.r;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
616 pOut.g = pC1.g + pC2.g;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
617 pOut.b = pC1.b + pC2.b;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
618 pOut.a = pC1.a + pC2.a;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
619 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
620 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
621
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
622 D3DXCOLOR* D3DXColorSubtract(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
623 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
624 if((pOut is null) || (pC1 is null) || (pC2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
625 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
626 pOut.r = pC1.r - pC2.r;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
627 pOut.g = pC1.g - pC2.g;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
628 pOut.b = pC1.b - pC2.b;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
629 pOut.a = pC1.a - pC2.a;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
630 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
631 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
632
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
633 D3DXCOLOR* D3DXColorScale(D3DXCOLOR* pOut, D3DXCOLOR* pC, float s) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
634 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
635 if((pOut is null) || (pC is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
636 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
637 pOut.r = pC.r * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
638 pOut.g = pC.g * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
639 pOut.b = pC.b * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
640 pOut.a = pC.a * s;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
641 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
642 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
643
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
644 D3DXCOLOR* D3DXColorModulate(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
645 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
646 if((pOut is null) || (pC1 is null) || (pC2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
647 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
648 pOut.r = pC1.r * pC2.r;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
649 pOut.g = pC1.g * pC2.g;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
650 pOut.b = pC1.b * pC2.b;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
651 pOut.a = pC1.a * pC2.a;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
652 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
653 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
654
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
655 D3DXCOLOR* D3DXColorLerp(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2, float s) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
656 debug(D3DX10_DEBUG) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
657 if((pOut is null) || (pC1 is null) || (pC2 is null)) return null;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
658 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
659 pOut.r = pC1.r + s * (pC2.r - pC1.r);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
660 pOut.g = pC1.g + s * (pC2.g - pC1.g);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
661 pOut.b = pC1.b + s * (pC2.b - pC1.b);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
662 pOut.a = pC1.a + s * (pC2.a - pC1.a);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
663 return pOut;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
664 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
665
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
666 extern(Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
667 D3DXCOLOR* D3DXColorAdjustSaturation(D3DXCOLOR* pOut, D3DXCOLOR* pC, float s);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
668 D3DXCOLOR* D3DXColorAdjustContrast(D3DXCOLOR* pOut, D3DXCOLOR* pC, float c);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
669 FLOAT D3DXFresnelTerm(float CosTheta, float RefractionIndex);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
670 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
671
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
672 extern (C) const GUID IID_ID3DXMatrixStack = {0xc7885ba7, 0xf990, 0x4fe7, [0x92, 0x2d, 0x85, 0x15, 0xe4, 0x77, 0xdd, 0x85]};
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
673
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
674 interface ID3DXMatrixStack : IUnknown {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
675 extern(Windows) :
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
676 HRESULT Pop();
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
677 HRESULT Push();
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
678 HRESULT LoadIdentity();
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
679 HRESULT LoadMatrix(D3DXMATRIX* pM );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
680 HRESULT MultMatrix(D3DXMATRIX* pM );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
681 HRESULT MultMatrixLocal(D3DXMATRIX* pM );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
682 HRESULT RotateAxis(D3DXVECTOR3* pV, float Angle);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
683 HRESULT RotateAxisLocal(D3DXVECTOR3* pV, float Angle);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
684 HRESULT RotateYawPitchRoll(float Yaw, float Pitch, float Roll);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
685 HRESULT RotateYawPitchRollLocal(float Yaw, float Pitch, float Roll);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
686 HRESULT Scale(float x, float y, float z);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
687 HRESULT ScaleLocal(float x, float y, float z);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
688 HRESULT Translate(float x, float y, float z );
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
689 HRESULT TranslateLocal(float x, float y, float z);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
690 D3DXMATRIX* GetTop();
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
691 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
692
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
693 //TODO extern(Windows) HRESULT D3DXCreateMatrixStack(UINT Flags, D3DXMATRIXSTACK* ppStack);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
694
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
695 const D3DXSH_MINORDER = 2;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
696 const D3DXSH_MAXORDER = 6;
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
697
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
698 extern(Windows) {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
699 float* D3DXSHEvalDirection(float* pOut, UINT Order, D3DXVECTOR3* pDir);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
700 float* D3DXSHRotate(float* pOut, UINT Order, D3DXMATRIX* pMatrix, float* pIn);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
701 float* D3DXSHRotateZ(float* pOut, UINT Order, float Angle, float* pIn);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
702 float* D3DXSHAdd(float* pOut, UINT Order, float* pA, float* pB);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
703 float* D3DXSHScale(float* pOut, UINT Order, float* pIn, float Scale);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
704 float D3DXSHDot(UINT Order, float* pA, float* pB);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
705 float* D3DXSHMultiply2(float* pOut, float* pF, float* pG);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
706 float* D3DXSHMultiply3(float* pOut, float* pF, float* pG);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
707 float* D3DXSHMultiply4(float* pOut, float* pF, float* pG);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
708 float* D3DXSHMultiply5(float* pOut, float* pF, float* pG);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
709 float* D3DXSHMultiply6(float* pOut, float* pF, float* pG);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
710 HRESULT D3DXSHEvalDirectionalLight(UINT Order, D3DXVECTOR3* pDir, float RIntensity, float GIntensity, float BIntensity, float* pROut, float* pGOut, float* pBOut);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
711 HRESULT D3DXSHEvalSphericalLight(UINT Order, D3DXVECTOR3* pPos, float Radius, float RIntensity, float GIntensity, float BIntensity, float* pROut, float* pGOut, float* pBOut);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
712 HRESULT D3DXSHEvalConeLight(UINT Order, D3DXVECTOR3* pDir, float Radius, float RIntensity, float GIntensity, float BIntensity, float* pROut, float* pGOut, float* pBOut);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
713 HRESULT D3DXSHEvalHemisphereLight(UINT Order, D3DXVECTOR3* pDir, D3DXCOLOR Top, D3DXCOLOR Bottom, float* pROut, float* pGOut, float* pBOut);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
714 BOOL D3DXIntersectTri(D3DXVECTOR3* p0, D3DXVECTOR3* p1, D3DXVECTOR3* p2, D3DXVECTOR3* pRayPos, D3DXVECTOR3* pRayDir, float* pU, float* pV, float* pDist);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
715 BOOL D3DXSphereBoundProbe(D3DXVECTOR3* pCenter, float Radius, D3DXVECTOR3* pRayPosition, D3DXVECTOR3* pRayDirection);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
716 BOOL D3DXBoxBoundProbe(D3DXVECTOR3* pMin, D3DXVECTOR3* pMax, D3DXVECTOR3* pRayPosition, D3DXVECTOR3* pRayDirection);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
717 HRESULT D3DXComputeBoundingSphere(D3DXVECTOR3* pFirstPosition, DWORD NumVertices, DWORD dwStride, D3DXVECTOR3* pCenter, float* pRadius);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
718 HRESULT D3DXComputeBoundingBox(D3DXVECTOR3* pFirstPosition, DWORD NumVertices, DWORD dwStride, D3DXVECTOR3* pMin, D3DXVECTOR3* pMax);
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
719 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
720
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
721 enum D3DX_CPU_OPTIMIZATION {
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
722 D3DX_NOT_OPTIMIZED = 0,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
723 D3DX_3DNOW_OPTIMIZED,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
724 D3DX_SSE2_OPTIMIZED,
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
725 D3DX_SSE_OPTIMIZED
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
726 }
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
727
4a9dcbd9e54f -files of 0.13 beta
marton@basel.hu
parents:
diff changeset
728 extern(Windows) D3DX_CPU_OPTIMIZATION D3DXCpuOptimizations(bool Enable);