8#include "Texture2DShader.h"
10static const uint32_t cpVertexShaderProgram[] =
12 0x00000000,0x00008009,0x20000000,0x000080a0,
13 0x3c200100,0x88060094,0x00400000,0x88042014,
14 0x00000000,0x00000000,0x00000000,0x00000000,
15 0x00000000,0x00000000,0x00000000,0x00000000,
16 0x00000000,0x00000000,0x00000000,0x00000000,
17 0x00000000,0x00000000,0x00000000,0x00000000,
18 0x00000000,0x00000000,0x00000000,0x00000000,
19 0x00000000,0x00000000,0x00000000,0x00000000,
20 0x00000000,0x00000000,0x00000000,0x00000000,
21 0x00000000,0x00000000,0x00000000,0x00000000,
22 0x00000000,0x00000000,0x00000000,0x00000000,
23 0x00000000,0x00000000,0x00000000,0x00000000,
24 0x00000000,0x00000000,0x00000000,0x00000000,
25 0x00000000,0x00000000,0x00000000,0x00000000,
26 0x00000000,0x00000000,0x00000000,0x00000000,
27 0x00000000,0x00000000,0x00000000,0x00000000,
28 0x02290001,0x80000000,0x02041f00,0x900c0020,
29 0x00a11f00,0xfc00624f,0xfd041f00,0x900c4060,
30 0x02001f80,0x900c0000,0x83f9223e,0x0000803f,
31 0xfe081f00,0x00080020,0xfe202081,0x10004040,
32 0xfea49f80,0xfd00620f,0xdb0f49c0,0xdb0fc940,
33 0xfea01f80,0x9000e06f,0x83f9223e,0x00000000,
34 0xfe0c1f80,0x00370000,0xffa01f00,0x80000040,
35 0xff101f00,0x800c0060,0x7f0c1f80,0x80370040,
36 0x0000103f,0x00000000,0xffa01f00,0x80000000,
37 0xff001f00,0x800c0020,0x02c51f01,0x80000040,
38 0xfeac9f80,0x80000060,0x0000103f,0x398ee33f,
39 0xfea01f00,0x80000000,0x02c19f01,0x9000e02f,
40 0x01c41f01,0x9000e04f,0x02c59f80,0x80000060,
41 0x398ee33f,0x00000000,0x01c49f01,0x80000020,
42 0x02c11f80,0x80000040,0x01e08f00,0xfe04624f,
43 0x01c01f81,0x7f08626f,0xfe2c2000,0x10004000,
44 0xfe28a080,0x10004020,0xeb825790,0xb6f711be,
48static const uint32_t cpVertexShaderRegs[] = {
49 0x00000103,0x00000000,0x00000000,0x00000001,
50 0xffffff00,0xffffffff,0xffffffff,0xffffffff,
51 0xffffffff,0xffffffff,0xffffffff,0xffffffff,
52 0xffffffff,0xffffffff,0x00000000,0xfffffffc,
53 0x00000002,0x00000000,0x00000001,0x000000ff,
54 0x000000ff,0x000000ff,0x000000ff,0x000000ff,
55 0x000000ff,0x000000ff,0x000000ff,0x000000ff,
56 0x000000ff,0x000000ff,0x000000ff,0x000000ff,
57 0x000000ff,0x000000ff,0x000000ff,0x000000ff,
58 0x000000ff,0x000000ff,0x000000ff,0x000000ff,
59 0x000000ff,0x000000ff,0x000000ff,0x000000ff,
60 0x000000ff,0x000000ff,0x000000ff,0x000000ff,
61 0x000000ff,0x00000000,0x0000000e,0x00000010
64static const uint32_t cPixelShaderProgram[] =
66 0x20000000,0x00000ca4,0x0b000000,0x00000085,
67 0x24000000,0x000050a0,0xb0000000,0x000cc080,
68 0x39000000,0x00005ca0,0xb8000000,0x000cc080,
69 0x51000000,0x000078a0,0xc0000000,0x000cc080,
70 0x70000000,0x000064a0,0xc8000000,0x0008c080,
71 0x8a000000,0x00005ca0,0x0e000000,0x01008086,
72 0xce000000,0x0000c080,0xa2000000,0x00000ca8,
73 0x00800000,0x88062094,0x00000000,0x00000000,
74 0x00000000,0x00000000,0x00000000,0x00000000,
75 0x00000000,0x00000000,0x00000000,0x00000000,
76 0x00000000,0x00000000,0x00000000,0x00000000,
77 0x00000000,0x00000000,0x00000000,0x00000000,
78 0x00000000,0x00000000,0x00000000,0x00000000,
79 0x00000000,0x00000000,0x00000000,0x00000000,
80 0x00000000,0x00000000,0x00000000,0x00000000,
81 0x00000000,0x00000000,0x00000000,0x00000000,
82 0x00051f00,0x80060000,0x00011f80,0x80060040,
83 0xfec81f80,0xfb802320,0x01041f80,0x8c220000,
84 0x00a41f00,0xfc10620f,0x010d1f00,0x900c0021,
85 0x00091f00,0x80060040,0x00a01f80,0xfc10626f,
86 0x00000040,0x00000000,0xfe080000,0xfe8cc300,
87 0xfe088080,0xfe80c320,0x00a11f00,0xfe000200,
88 0x00a51f00,0xfe040220,0x00a19f00,0xfe000240,
89 0x00a59f00,0xfe040260,0x00a11f81,0xfe002600,
90 0x4260e5bc,0xa69bc4bc,0x0ad7a3bc,0x00000000,
91 0x00a11f00,0x06004200,0x00a59f00,0x06042220,
92 0x00a51f00,0x06044240,0x00a11f01,0x06008260,
93 0x00a51f81,0x06048620,0x6f1283bc,0x0ad7a3bc,
94 0xa69b44bc,0x00000000,0x00a41f00,0x80000000,
95 0x00a01f00,0x80000020,0x00ac1f00,0x80000040,
96 0x00a81f00,0x80000060,0x00a19f80,0x06000600,
97 0xcac3123c,0x6f1203bc,0x03a41f00,0xfe00620f,
98 0x03a01f00,0xfe04622f,0x03ac1f00,0xfe08624f,
99 0x03a81f00,0xfe0c626f,0x00a59f80,0x06040620,
100 0xcc28913b,0x6f1203bc,0x01a41f00,0xfe00620f,
101 0x01a01f00,0xfe04622f,0x01ac1f00,0xfe08624f,
102 0x01a81f00,0xfe0c626f,0x00a19f80,0x06002600,
103 0xe8eab03c,0x6f1283bb,0x02ac1f00,0xfe084200,
104 0x02a81f00,0xfe0c4220,0x02a41f00,0xfe004240,
105 0x02a01f00,0xfe044260,0x00a59f80,0x06042620,
106 0x92bb353d,0x6f1283bb,0x04a81f00,0x0204620f,
107 0x04ac1f00,0x0200662f,0x04a41f00,0x0208624f,
108 0x04a01f00,0x020c626f,0x00a19f80,0x06004600,
109 0xc4139f3d,0x6f12833b,0x00a41f00,0xfe08620f,
110 0x00a01f00,0xfe0c622f,0x00ac1f00,0xfe04624f,
111 0x00a81f00,0xfe00626f,0x00a59f80,0x06044620,
112 0xb950ed3d,0x6f12833b,0x01a41f00,0xfe00620f,
113 0x01a01f00,0xfe04622f,0x01ac1f00,0xfe08624f,
114 0x01a81f00,0xfe0c626f,0x00a19f80,0x06002600,
115 0xecd7163e,0x6f12033c,0x03a41f00,0xfe000200,
116 0x03a01f00,0xfe040220,0x03ac1f00,0xfe082240,
117 0x03a81f00,0xfe0c2260,0x00a59f80,0x06042620,
118 0x2168233e,0x6f12033c,0x00a11f00,0x06006200,
119 0x00a51f00,0x06046220,0x00a19f00,0x06006240,
120 0x00a59f00,0x06046260,0x00a11f81,0x0600e600,
121 0xa69b443c,0x6f12833c,0x0ad7a33c,0x00000000,
122 0x02ac1f00,0x0108620f,0x02a81f00,0x010c622f,
123 0x02a41f00,0x0000624f,0x02a01f00,0x0004666f,
124 0x00a59f80,0x0604e620,0xecd7163e,0x0ad7a33c,
125 0x04a81f00,0xfe04620f,0x04ac1f00,0xfe00622f,
126 0x04a41f00,0xfe08624f,0x04a01f00,0xfe0c626f,
127 0x00a19f80,0x06008600,0xb950ed3d,0xa69bc43c,
128 0x05a41f00,0xfe08620f,0x05a01f00,0xfe0c622f,
129 0x05ac1f00,0xfe04624f,0x05a81f00,0xfe00626f,
130 0x00a59f80,0x06048620,0xc4139f3d,0xa69bc43c,
131 0x03a41f00,0xfe00a200,0x03a01f00,0xfe04a220,
132 0x03ac1f00,0xfe086240,0x03a81f00,0xfe0c6260,
133 0x00a19f80,0x06006600,0x92bb353d,0x4260e53c,
134 0x00a51f80,0x06046220,0x4260e53c,0x00000000,
135 0x07ac1f00,0x0308620f,0x07a81f00,0x030c622f,
136 0x07a41f00,0x0500624f,0x07a01f80,0x0504626f,
137 0xe8eab03c,0x00000000,0x04a81f00,0xfe04620f,
138 0x04ac1f00,0xfe00622f,0x04a41f00,0xfe08624f,
139 0x04a01f80,0xfe0c626f,0xcac3123c,0x00000000,
140 0x06a41f00,0xfe08620f,0x06a01f00,0xfe0c622f,
141 0x06ac1f00,0xfe04624f,0x06a81f80,0xfe00626f,
142 0xcc28913b,0x00000000,0xfe20a000,0x9000e00f,
143 0xfe242000,0x9000e02f,0xfe28a001,0x9000e04f,
144 0xfe2c2081,0x9000e06f,0xfe28a081,0x80060020,
145 0xfee48f00,0x7f842300,0xfee40f00,0x7f802320,
146 0xfee48f01,0x7f8c2340,0xfee40f81,0x08842b60,
147 0x00202000,0x90002000,0x0024a000,0x90002020,
148 0x00282001,0x90002040,0x002ca081,0x90002060,
149 0x00000000,0x00000000,0x00000000,0x00000000,
150 0x00000000,0x00000000,0x00000000,0x00000000,
151 0x00000000,0x00000000,0x00000000,0x00000000,
152 0x00000000,0x00000000,0x00000000,0x00000000,
153 0x00000000,0x00000000,0x00000000,0x00000000,
154 0x10000000,0x03100df0,0x00008010,0xecdfea0d,
155 0x10000000,0x00100df0,0x0000a051,0xecdfea0d,
156 0x10000100,0x01100df0,0x00008010,0xecdfea0d,
157 0x10000200,0x02100df0,0x00000011,0xecdfea0d,
158 0x10000400,0x04100df0,0x0000b070,0xecdfea0d,
159 0x10000000,0x00100df0,0x00008010,0xecdfea0d,
160 0x10000100,0x01100df0,0x00008010,0xecdfea0d,
161 0x10000600,0x03100df0,0x00008010,0xecdfea0d,
162 0x10000200,0x02100df0,0x00008010,0xecdfea0d,
163 0x10000100,0x04100df0,0x00008010,0xecdfea0d,
164 0x10000300,0x05100df0,0x00008010,0xecdfea0d,
165 0x10000300,0x03100df0,0x0000a051,0xecdfea0d,
166 0x10000700,0x07100df0,0x00008010,0xecdfea0d,
167 0x10000400,0x04100df0,0x00008010,0xecdfea0d,
168 0x10000300,0x06100df0,0x00008010,0xecdfea0d,
169 0x10000000,0x00100df0,0x00008010,0xecdfea0d,
170 0xc8581837,0x22740275,0x281eddcc,0xfa8b9b65
172static const uint32_t cPixelShaderRegs[] = {
173 0x00000109,0x00000002,0x14000001,0x00000000,
174 0x00000001,0x00000100,0x00000000,0x00000000,
175 0x00000000,0x00000000,0x00000000,0x00000000,
176 0x00000000,0x00000000,0x00000000,0x00000000,
177 0x00000000,0x00000000,0x00000000,0x00000000,
178 0x00000000,0x00000000,0x00000000,0x00000000,
179 0x00000000,0x00000000,0x00000000,0x00000000,
180 0x00000000,0x00000000,0x00000000,0x00000000,
181 0x00000000,0x00000000,0x00000000,0x00000000,
182 0x00000000,0x0000000f,0x00000001,0x00000010,
188Texture2DShader::Texture2DShader()
189 : vertexShader(cuAttributeCount)
191 pixelShader.setProgram(cPixelShaderProgram,
sizeof(cPixelShaderProgram), cPixelShaderRegs,
sizeof(cPixelShaderRegs));
194 colorIntensityLocation = 4;
195 pixelShader.addUniformVar((GX2UniformVar){
"unf_blur_texture_direction", GX2_SHADER_VAR_TYPE_FLOAT3, 1, blurLocation, -1 });
196 pixelShader.addUniformVar((GX2UniformVar){
"unf_color_intensity", GX2_SHADER_VAR_TYPE_FLOAT4, 1, colorIntensityLocation, -1 });
199 pixelShader.addSamplerVar((GX2SamplerVar){
"sampl_texture", GX2_SAMPLER_VAR_TYPE_SAMPLER_2D, samplerLocation });
201 vertexShader.setProgram(cpVertexShaderProgram,
sizeof(cpVertexShaderProgram), cpVertexShaderRegs,
sizeof(cpVertexShaderRegs));
206 vertexShader.addUniformVar((GX2UniformVar){
"unf_angle", GX2_SHADER_VAR_TYPE_FLOAT, 1, angleLocation, -1 });
207 vertexShader.addUniformVar((GX2UniformVar){
"unf_offset", GX2_SHADER_VAR_TYPE_FLOAT3, 1, offsetLocation, -1 });
208 vertexShader.addUniformVar((GX2UniformVar){
"unf_scale", GX2_SHADER_VAR_TYPE_FLOAT3, 1, scaleLocation, -1 });
210 positionLocation = 0;
211 texCoordLocation = 1;
212 vertexShader.addAttribVar((GX2AttribVar){
"attr_position", GX2_SHADER_VAR_TYPE_FLOAT3, 0, positionLocation });
213 vertexShader.addAttribVar((GX2AttribVar){
"attr_texture_coord", GX2_SHADER_VAR_TYPE_FLOAT2, 0, texCoordLocation });
215 GX2InitAttribStream(vertexShader.getAttributeBuffer(0), positionLocation, 0, 0, GX2_ATTRIB_FORMAT_FLOAT_32_32_32);
216 GX2InitAttribStream(vertexShader.getAttributeBuffer(1), texCoordLocation, 1, 0, GX2_ATTRIB_FORMAT_FLOAT_32_32);
218 fetchShader =
new FetchShader(vertexShader.getAttributeBuffer(), vertexShader.getAttributesCount());
223 posVtxs =
static_cast<float *
>(memalign(GX2_VERTEX_BUFFER_ALIGNMENT, ciPositionVtxsSize));
224 texCoords =
static_cast<float *
>(memalign(GX2_VERTEX_BUFFER_ALIGNMENT, ciTexCoordsVtxsSize));
229 posVtxs[i++] = -1.0f; posVtxs[i++] = -1.0f; posVtxs[i++] = 0.0f;
230 posVtxs[i++] = 1.0f; posVtxs[i++] = -1.0f; posVtxs[i++] = 0.0f;
231 posVtxs[i++] = 1.0f; posVtxs[i++] = 1.0f; posVtxs[i++] = 0.0f;
232 posVtxs[i++] = -1.0f; posVtxs[i++] = 1.0f; posVtxs[i++] = 0.0f;
233 GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, posVtxs, ciPositionVtxsSize);
236 texCoords[i++] = 0.0f; texCoords[i++] = 1.0f;
237 texCoords[i++] = 1.0f; texCoords[i++] = 1.0f;
238 texCoords[i++] = 1.0f; texCoords[i++] = 0.0f;
239 texCoords[i++] = 0.0f; texCoords[i++] = 0.0f;
240 GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, texCoords, ciTexCoordsVtxsSize);
242 memset(&rotatedBuffer, 0,
sizeof(rotatedBuffer));
243 rotatedBuffer.flags =
static_cast<GX2RResourceFlags
>(
244 GX2R_RESOURCE_BIND_VERTEX_BUFFER | GX2R_RESOURCE_USAGE_CPU_WRITE | GX2R_RESOURCE_USAGE_GPU_READ);
245 rotatedBuffer.elemSize = cuRotatedSlotSize;
246 rotatedBuffer.elemCount = cuMaxRotatedDraws;
247 GX2RCreateBuffer(&rotatedBuffer);
251Texture2DShader::~Texture2DShader()
255 if(GX2RBufferExists(&rotatedBuffer))
256 GX2RDestroyBufferEx(&rotatedBuffer,
static_cast<GX2RResourceFlags
>(0));
Owns the GX2 fetch shader program that binds vertex attribute streams to a vertex shader.
Textured quad shader (images, glyphs), used by WutImageRenderer and WutGlyphRenderer.