1/*
2 * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25#if 0
26//
27// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
28//
29//   fxc /T ps_2_0 /Vn rescale0 /Fh tmp.h tmp.hlsl
30//
31//
32// Parameters:
33//
34//   sampler2D baseImage;
35//   float4 offsets;
36//   float4 scaleFactors;
37//
38//
39// Registers:
40//
41//   Name         Reg   Size
42//   ------------ ----- ----
43//   scaleFactors c0       1
44//   offsets      c1       1
45//   baseImage    s0       1
46//
47
48    ps_2_0
49    dcl t0.xy
50    dcl v0
51    dcl_2d s0
52    texld r0, t0, s0
53    mov r1, c0
54    mad r0, r0, r1, c1
55    mul r0, r0, v0
56    mov oC0, r0
57
58// approximately 5 instruction slots used (1 texture, 4 arithmetic)
59#endif
60
61const DWORD rescale0[] =
62{
63    0xffff0200, 0x0036fffe, 0x42415443, 0x0000001c, 0x000000a0, 0xffff0200,
64    0x00000003, 0x0000001c, 0x20000100, 0x00000099, 0x00000058, 0x00000003,
65    0x00020001, 0x00000064, 0x00000000, 0x00000074, 0x00010002, 0x00060001,
66    0x0000007c, 0x00000000, 0x0000008c, 0x00000002, 0x00020001, 0x0000007c,
67    0x00000000, 0x65736162, 0x67616d49, 0xabab0065, 0x000c0004, 0x00010001,
68    0x00000001, 0x00000000, 0x7366666f, 0x00737465, 0x00030001, 0x00040001,
69    0x00000001, 0x00000000, 0x6c616373, 0x63614665, 0x73726f74, 0x5f737000,
70    0x00305f32, 0x7263694d, 0x666f736f, 0x52282074, 0x4c482029, 0x53204c53,
71    0x65646168, 0x6f432072, 0x6c69706d, 0x39207265, 0x2e39312e, 0x2e393439,
72    0x31313132, 0xababab00, 0x0200001f, 0x80000000, 0xb0030000, 0x0200001f,
73    0x80000000, 0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x03000042,
74    0x800f0000, 0xb0e40000, 0xa0e40800, 0x02000001, 0x800f0001, 0xa0e40000,
75    0x04000004, 0x800f0000, 0x80e40000, 0x80e40001, 0xa0e40001, 0x03000005,
76    0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
77    0x0000ffff
78};
79#if 0
80//
81// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
82//
83//   fxc /T ps_2_0 /Vn rescale1 /Fh tmp.h tmp.hlsl
84//
85//
86// Parameters:
87//
88//   sampler2D baseImage;
89//   float4 offsets;
90//   float4 scaleFactors;
91//
92//
93// Registers:
94//
95//   Name         Reg   Size
96//   ------------ ----- ----
97//   scaleFactors c0       1
98//   offsets      c1       1
99//   baseImage    s0       1
100//
101
102    ps_2_0
103    dcl t0.xy
104    dcl v0
105    dcl_2d s0
106    texld r0, t0, s0
107    rcp r1.w, r0.w
108    mul r0.xyz, r0, r1.w
109    mov r1, c0
110    mad r0, r0, r1, c1
111    mul r0.xyz, r0.w, r0
112    mul r0, r0, v0
113    mov oC0, r0
114
115// approximately 8 instruction slots used (1 texture, 7 arithmetic)
116#endif
117
118const DWORD rescale1[] =
119{
120    0xffff0200, 0x0036fffe, 0x42415443, 0x0000001c, 0x000000a0, 0xffff0200,
121    0x00000003, 0x0000001c, 0x20000100, 0x00000099, 0x00000058, 0x00000003,
122    0x00020001, 0x00000064, 0x00000000, 0x00000074, 0x00010002, 0x00060001,
123    0x0000007c, 0x00000000, 0x0000008c, 0x00000002, 0x00020001, 0x0000007c,
124    0x00000000, 0x65736162, 0x67616d49, 0xabab0065, 0x000c0004, 0x00010001,
125    0x00000001, 0x00000000, 0x7366666f, 0x00737465, 0x00030001, 0x00040001,
126    0x00000001, 0x00000000, 0x6c616373, 0x63614665, 0x73726f74, 0x5f737000,
127    0x00305f32, 0x7263694d, 0x666f736f, 0x52282074, 0x4c482029, 0x53204c53,
128    0x65646168, 0x6f432072, 0x6c69706d, 0x39207265, 0x2e39312e, 0x2e393439,
129    0x31313132, 0xababab00, 0x0200001f, 0x80000000, 0xb0030000, 0x0200001f,
130    0x80000000, 0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x03000042,
131    0x800f0000, 0xb0e40000, 0xa0e40800, 0x02000006, 0x80080001, 0x80ff0000,
132    0x03000005, 0x80070000, 0x80e40000, 0x80ff0001, 0x02000001, 0x800f0001,
133    0xa0e40000, 0x04000004, 0x800f0000, 0x80e40000, 0x80e40001, 0xa0e40001,
134    0x03000005, 0x80070000, 0x80ff0000, 0x80e40000, 0x03000005, 0x800f0000,
135    0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
136};
137const DWORD *rescaleShaders[] =
138{
139    rescale0,
140    rescale1,
141};
142
143#if 0
144//
145// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
146//
147//   fxc /T ps_2_0 /Vn convolve0 /Fh tmp.h tmp.hlsl
148//
149//
150// Parameters:
151//
152//   sampler2D baseImage;
153//   float4 imgEdge;
154//   float3 kernelVals[9];
155//
156//
157// Registers:
158//
159//   Name         Reg   Size
160//   ------------ ----- ----
161//   imgEdge      c0       1
162//   kernelVals   c1       9
163//   baseImage    s0       1
164//
165
166    ps_2_0
167    def c10, 0, 1, 0, 0
168    dcl t0.xy
169    dcl v0
170    dcl_2d s0
171    add r0.xy, t0, c2
172    add r1.xy, t0, c1
173    add r2.xy, t0, c3
174    add r3.xy, t0, c4
175    add r4.xy, t0, c5
176    add r5.xy, t0, c6
177    add r6.xy, t0, c7
178    add r7.xy, t0, c8
179    add r8.xy, t0, c9
180    texld r0, r0, s0
181    texld r1, r1, s0
182    texld r2, r2, s0
183    texld r9, t0, s0
184    texld r3, r3, s0
185    texld r4, r4, s0
186    texld r5, r5, s0
187    texld r6, r6, s0
188    texld r7, r7, s0
189    texld r8, r8, s0
190    mul r0, r0, c2.z
191    mad r0, c1.z, r1, r0
192    mad r0, c3.z, r2, r0
193    mad r0, c4.z, r3, r0
194    mad r0, c5.z, r4, r0
195    mad r0, c6.z, r5, r0
196    mad r0, c7.z, r6, r0
197    mad r0, c8.z, r7, r0
198    mad r0, c9.z, r8, r0
199    mul r0, r0, v0
200    add r1.yw, -t0.y, c0
201    add r1.xz, -t0.x, c0
202    cmp r1.x, -r1.x, c10.x, c10.y
203    cmp r1.y, -r1.y, c10.x, c10.y
204    add r1.x, r1.x, r1.y
205    cmp r1.x, -r1.x, c10.x, c10.y
206    cmp r1.y, r1.z, c10.x, c10.y
207    cmp r1.z, r1.w, c10.x, c10.y
208    add r1.x, r1.x, r1.y
209    cmp r1.x, -r1.x, c10.x, c10.y
210    add r1.x, r1.z, r1.x
211    cmp r0, -r1.x, r0, r9
212    mov oC0, r0
213
214// approximately 42 instruction slots used (10 texture, 32 arithmetic)
215#endif
216
217const DWORD convolve0[] =
218{
219    0xffff0200, 0x0039fffe, 0x42415443, 0x0000001c, 0x000000af, 0xffff0200,
220    0x00000003, 0x0000001c, 0x20000100, 0x000000a8, 0x00000058, 0x00000003,
221    0x00020001, 0x00000064, 0x00000000, 0x00000074, 0x00000002, 0x00020001,
222    0x0000007c, 0x00000000, 0x0000008c, 0x00010002, 0x00060009, 0x00000098,
223    0x00000000, 0x65736162, 0x67616d49, 0xabab0065, 0x000c0004, 0x00010001,
224    0x00000001, 0x00000000, 0x45676d69, 0x00656764, 0x00030001, 0x00040001,
225    0x00000001, 0x00000000, 0x6e72656b, 0x61566c65, 0xab00736c, 0x00030001,
226    0x00030001, 0x00000009, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369,
227    0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320,
228    0x656c6970, 0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051,
229    0xa00f000a, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x0200001f,
230    0x80000000, 0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f,
231    0x90000000, 0xa00f0800, 0x03000002, 0x80030000, 0xb0e40000, 0xa0e40002,
232    0x03000002, 0x80030001, 0xb0e40000, 0xa0e40001, 0x03000002, 0x80030002,
233    0xb0e40000, 0xa0e40003, 0x03000002, 0x80030003, 0xb0e40000, 0xa0e40004,
234    0x03000002, 0x80030004, 0xb0e40000, 0xa0e40005, 0x03000002, 0x80030005,
235    0xb0e40000, 0xa0e40006, 0x03000002, 0x80030006, 0xb0e40000, 0xa0e40007,
236    0x03000002, 0x80030007, 0xb0e40000, 0xa0e40008, 0x03000002, 0x80030008,
237    0xb0e40000, 0xa0e40009, 0x03000042, 0x800f0000, 0x80e40000, 0xa0e40800,
238    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0002,
239    0x80e40002, 0xa0e40800, 0x03000042, 0x800f0009, 0xb0e40000, 0xa0e40800,
240    0x03000042, 0x800f0003, 0x80e40003, 0xa0e40800, 0x03000042, 0x800f0004,
241    0x80e40004, 0xa0e40800, 0x03000042, 0x800f0005, 0x80e40005, 0xa0e40800,
242    0x03000042, 0x800f0006, 0x80e40006, 0xa0e40800, 0x03000042, 0x800f0007,
243    0x80e40007, 0xa0e40800, 0x03000042, 0x800f0008, 0x80e40008, 0xa0e40800,
244    0x03000005, 0x800f0000, 0x80e40000, 0xa0aa0002, 0x04000004, 0x800f0000,
245    0xa0aa0001, 0x80e40001, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0003,
246    0x80e40002, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0004, 0x80e40003,
247    0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0005, 0x80e40004, 0x80e40000,
248    0x04000004, 0x800f0000, 0xa0aa0006, 0x80e40005, 0x80e40000, 0x04000004,
249    0x800f0000, 0xa0aa0007, 0x80e40006, 0x80e40000, 0x04000004, 0x800f0000,
250    0xa0aa0008, 0x80e40007, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0009,
251    0x80e40008, 0x80e40000, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000,
252    0x03000002, 0x800a0001, 0xb1550000, 0xa0e40000, 0x03000002, 0x80050001,
253    0xb1000000, 0xa0e40000, 0x04000058, 0x80010001, 0x81000001, 0xa000000a,
254    0xa055000a, 0x04000058, 0x80020001, 0x81550001, 0xa000000a, 0xa055000a,
255    0x03000002, 0x80010001, 0x80000001, 0x80550001, 0x04000058, 0x80010001,
256    0x81000001, 0xa000000a, 0xa055000a, 0x04000058, 0x80020001, 0x80aa0001,
257    0xa000000a, 0xa055000a, 0x04000058, 0x80040001, 0x80ff0001, 0xa000000a,
258    0xa055000a, 0x03000002, 0x80010001, 0x80000001, 0x80550001, 0x04000058,
259    0x80010001, 0x81000001, 0xa000000a, 0xa055000a, 0x03000002, 0x80010001,
260    0x80aa0001, 0x80000001, 0x04000058, 0x800f0000, 0x81000001, 0x80e40000,
261    0x80e40009, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
262};
263#if 0
264//
265// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
266//
267//   fxc /T ps_2_0 /Vn convolve1 /Fh tmp.h tmp.hlsl
268//
269//
270// Parameters:
271//
272//   sampler2D baseImage;
273//   float4 imgEdge;
274//   float3 kernelVals[9];
275//
276//
277// Registers:
278//
279//   Name         Reg   Size
280//   ------------ ----- ----
281//   imgEdge      c0       1
282//   kernelVals   c1       9
283//   baseImage    s0       1
284//
285
286    ps_2_0
287    def c10, 0, 1, 0, 0
288    dcl t0.xy
289    dcl v0
290    dcl_2d s0
291    add r0.xy, t0, c2
292    add r1.xy, t0, c1
293    add r2.xy, t0, c3
294    add r3.xy, t0, c4
295    add r4.xy, t0, c5
296    add r5.xy, t0, c6
297    add r6.xy, t0, c7
298    add r7.xy, t0, c8
299    add r8.xy, t0, c9
300    texld r0, r0, s0
301    texld r1, r1, s0
302    texld r2, r2, s0
303    texld r3, r3, s0
304    texld r4, r4, s0
305    texld r5, r5, s0
306    texld r6, r6, s0
307    texld r7, r7, s0
308    texld r8, r8, s0
309    mul r0, r0, c2.z
310    mad r0, c1.z, r1, r0
311    mad r0, c3.z, r2, r0
312    mad r0, c4.z, r3, r0
313    mad r0, c5.z, r4, r0
314    mad r0, c6.z, r5, r0
315    mad r0, c7.z, r6, r0
316    mad r0, c8.z, r7, r0
317    mad r0, c9.z, r8, r0
318    mul r0, r0, v0
319    add r1.yw, -t0.y, c0
320    add r1.xz, -t0.x, c0
321    cmp r1.x, -r1.x, c10.x, c10.y
322    cmp r1.y, -r1.y, c10.x, c10.y
323    add r1.x, r1.x, r1.y
324    cmp r1.x, -r1.x, c10.x, c10.y
325    cmp r1.y, r1.z, c10.x, c10.y
326    cmp r1.z, r1.w, c10.x, c10.y
327    add r1.x, r1.x, r1.y
328    cmp r1.x, -r1.x, c10.x, c10.y
329    add r1.x, r1.z, r1.x
330    cmp r0, -r1.x, r0, c10.x
331    mov oC0, r0
332
333// approximately 41 instruction slots used (9 texture, 32 arithmetic)
334#endif
335
336const DWORD convolve1[] =
337{
338    0xffff0200, 0x0039fffe, 0x42415443, 0x0000001c, 0x000000af, 0xffff0200,
339    0x00000003, 0x0000001c, 0x20000100, 0x000000a8, 0x00000058, 0x00000003,
340    0x00020001, 0x00000064, 0x00000000, 0x00000074, 0x00000002, 0x00020001,
341    0x0000007c, 0x00000000, 0x0000008c, 0x00010002, 0x00060009, 0x00000098,
342    0x00000000, 0x65736162, 0x67616d49, 0xabab0065, 0x000c0004, 0x00010001,
343    0x00000001, 0x00000000, 0x45676d69, 0x00656764, 0x00030001, 0x00040001,
344    0x00000001, 0x00000000, 0x6e72656b, 0x61566c65, 0xab00736c, 0x00030001,
345    0x00030001, 0x00000009, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369,
346    0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320,
347    0x656c6970, 0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051,
348    0xa00f000a, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x0200001f,
349    0x80000000, 0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f,
350    0x90000000, 0xa00f0800, 0x03000002, 0x80030000, 0xb0e40000, 0xa0e40002,
351    0x03000002, 0x80030001, 0xb0e40000, 0xa0e40001, 0x03000002, 0x80030002,
352    0xb0e40000, 0xa0e40003, 0x03000002, 0x80030003, 0xb0e40000, 0xa0e40004,
353    0x03000002, 0x80030004, 0xb0e40000, 0xa0e40005, 0x03000002, 0x80030005,
354    0xb0e40000, 0xa0e40006, 0x03000002, 0x80030006, 0xb0e40000, 0xa0e40007,
355    0x03000002, 0x80030007, 0xb0e40000, 0xa0e40008, 0x03000002, 0x80030008,
356    0xb0e40000, 0xa0e40009, 0x03000042, 0x800f0000, 0x80e40000, 0xa0e40800,
357    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0002,
358    0x80e40002, 0xa0e40800, 0x03000042, 0x800f0003, 0x80e40003, 0xa0e40800,
359    0x03000042, 0x800f0004, 0x80e40004, 0xa0e40800, 0x03000042, 0x800f0005,
360    0x80e40005, 0xa0e40800, 0x03000042, 0x800f0006, 0x80e40006, 0xa0e40800,
361    0x03000042, 0x800f0007, 0x80e40007, 0xa0e40800, 0x03000042, 0x800f0008,
362    0x80e40008, 0xa0e40800, 0x03000005, 0x800f0000, 0x80e40000, 0xa0aa0002,
363    0x04000004, 0x800f0000, 0xa0aa0001, 0x80e40001, 0x80e40000, 0x04000004,
364    0x800f0000, 0xa0aa0003, 0x80e40002, 0x80e40000, 0x04000004, 0x800f0000,
365    0xa0aa0004, 0x80e40003, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0005,
366    0x80e40004, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0006, 0x80e40005,
367    0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0007, 0x80e40006, 0x80e40000,
368    0x04000004, 0x800f0000, 0xa0aa0008, 0x80e40007, 0x80e40000, 0x04000004,
369    0x800f0000, 0xa0aa0009, 0x80e40008, 0x80e40000, 0x03000005, 0x800f0000,
370    0x80e40000, 0x90e40000, 0x03000002, 0x800a0001, 0xb1550000, 0xa0e40000,
371    0x03000002, 0x80050001, 0xb1000000, 0xa0e40000, 0x04000058, 0x80010001,
372    0x81000001, 0xa000000a, 0xa055000a, 0x04000058, 0x80020001, 0x81550001,
373    0xa000000a, 0xa055000a, 0x03000002, 0x80010001, 0x80000001, 0x80550001,
374    0x04000058, 0x80010001, 0x81000001, 0xa000000a, 0xa055000a, 0x04000058,
375    0x80020001, 0x80aa0001, 0xa000000a, 0xa055000a, 0x04000058, 0x80040001,
376    0x80ff0001, 0xa000000a, 0xa055000a, 0x03000002, 0x80010001, 0x80000001,
377    0x80550001, 0x04000058, 0x80010001, 0x81000001, 0xa000000a, 0xa055000a,
378    0x03000002, 0x80010001, 0x80aa0001, 0x80000001, 0x04000058, 0x800f0000,
379    0x81000001, 0x80e40000, 0xa000000a, 0x02000001, 0x800f0800, 0x80e40000,
380    0x0000ffff
381};
382#if 0
383//
384// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
385//
386//   fxc /T ps_2_0 /Vn convolve2 /Fh tmp.h tmp.hlsl
387//
388//
389// Parameters:
390//
391//   sampler2D baseImage;
392//   float4 imgEdge;
393//   float3 kernelVals[25];
394//
395//
396// Registers:
397//
398//   Name         Reg   Size
399//   ------------ ----- ----
400//   imgEdge      c0       1
401//   kernelVals   c1      25
402//   baseImage    s0       1
403//
404
405    ps_2_0
406    def c26, 0, 1, 0, 0
407    dcl t0.xy
408    dcl v0
409    dcl_2d s0
410    add r0.xy, t0, c2
411    add r1.xy, t0, c1
412    add r2.xy, t0, c3
413    add r3.xy, t0, c4
414    add r4.xy, t0, c5
415    add r5.xy, t0, c6
416    add r6.xy, t0, c7
417    add r7.xy, t0, c8
418    add r8.xy, t0, c9
419    texld r0, r0, s0
420    texld r1, r1, s0
421    texld r2, r2, s0
422    texld r3, r3, s0
423    texld r4, r4, s0
424    texld r5, r5, s0
425    texld r6, r6, s0
426    texld r7, r7, s0
427    texld r8, r8, s0
428    mul r0, r0, c2.z
429    mad r0, c1.z, r1, r0
430    mad r0, c3.z, r2, r0
431    mad r0, c4.z, r3, r0
432    mad r0, c5.z, r4, r0
433    mad r0, c6.z, r5, r0
434    mad r0, c7.z, r6, r0
435    mad r0, c8.z, r7, r0
436    mad r0, c9.z, r8, r0
437    add r1.xy, t0, c10
438    add r2.xy, t0, c11
439    add r3.xy, t0, c12
440    add r4.xy, t0, c13
441    add r5.xy, t0, c14
442    add r6.xy, t0, c15
443    add r7.xy, t0, c16
444    add r8.xy, t0, c17
445    add r9.xy, t0, c18
446    texld r1, r1, s0
447    texld r2, r2, s0
448    texld r3, r3, s0
449    texld r4, r4, s0
450    texld r5, r5, s0
451    texld r6, r6, s0
452    texld r7, r7, s0
453    texld r8, r8, s0
454    texld r9, r9, s0
455    mad r0, c10.z, r1, r0
456    mad r0, c11.z, r2, r0
457    mad r0, c12.z, r3, r0
458    mad r0, c13.z, r4, r0
459    mad r0, c14.z, r5, r0
460    mad r0, c15.z, r6, r0
461    mad r0, c16.z, r7, r0
462    mad r0, c17.z, r8, r0
463    mad r0, c18.z, r9, r0
464    add r1.xy, t0, c19
465    add r2.xy, t0, c20
466    add r3.xy, t0, c21
467    add r4.xy, t0, c22
468    add r5.xy, t0, c23
469    add r6.xy, t0, c24
470    add r7.xy, t0, c25
471    texld r1, r1, s0
472    texld r2, r2, s0
473    texld r3, r3, s0
474    texld r4, r4, s0
475    texld r5, r5, s0
476    texld r6, r6, s0
477    texld r7, r7, s0
478    texld r8, t0, s0
479    mad r0, c19.z, r1, r0
480    mad r0, c20.z, r2, r0
481    mad r0, c21.z, r3, r0
482    mad r0, c22.z, r4, r0
483    mad r0, c23.z, r5, r0
484    mad r0, c24.z, r6, r0
485    mad r0, c25.z, r7, r0
486    mul r0, r0, v0
487    add r1.yw, -t0.y, c0
488    add r1.xz, -t0.x, c0
489    cmp r1.x, -r1.x, c26.x, c26.y
490    cmp r1.y, -r1.y, c26.x, c26.y
491    add r1.x, r1.x, r1.y
492    cmp r1.x, -r1.x, c26.x, c26.y
493    cmp r1.y, r1.z, c26.x, c26.y
494    cmp r1.z, r1.w, c26.x, c26.y
495    add r1.x, r1.x, r1.y
496    cmp r1.x, -r1.x, c26.x, c26.y
497    add r1.x, r1.z, r1.x
498    cmp r0, -r1.x, r0, r8
499    mov oC0, r0
500
501// approximately 90 instruction slots used (26 texture, 64 arithmetic)
502#endif
503
504const DWORD convolve2[] =
505{
506    0xffff0200, 0x0039fffe, 0x42415443, 0x0000001c, 0x000000af, 0xffff0200,
507    0x00000003, 0x0000001c, 0x20000100, 0x000000a8, 0x00000058, 0x00000003,
508    0x00020001, 0x00000064, 0x00000000, 0x00000074, 0x00000002, 0x00020001,
509    0x0000007c, 0x00000000, 0x0000008c, 0x00010002, 0x00060019, 0x00000098,
510    0x00000000, 0x65736162, 0x67616d49, 0xabab0065, 0x000c0004, 0x00010001,
511    0x00000001, 0x00000000, 0x45676d69, 0x00656764, 0x00030001, 0x00040001,
512    0x00000001, 0x00000000, 0x6e72656b, 0x61566c65, 0xab00736c, 0x00030001,
513    0x00030001, 0x00000019, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369,
514    0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320,
515    0x656c6970, 0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051,
516    0xa00f001a, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x0200001f,
517    0x80000000, 0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f,
518    0x90000000, 0xa00f0800, 0x03000002, 0x80030000, 0xb0e40000, 0xa0e40002,
519    0x03000002, 0x80030001, 0xb0e40000, 0xa0e40001, 0x03000002, 0x80030002,
520    0xb0e40000, 0xa0e40003, 0x03000002, 0x80030003, 0xb0e40000, 0xa0e40004,
521    0x03000002, 0x80030004, 0xb0e40000, 0xa0e40005, 0x03000002, 0x80030005,
522    0xb0e40000, 0xa0e40006, 0x03000002, 0x80030006, 0xb0e40000, 0xa0e40007,
523    0x03000002, 0x80030007, 0xb0e40000, 0xa0e40008, 0x03000002, 0x80030008,
524    0xb0e40000, 0xa0e40009, 0x03000042, 0x800f0000, 0x80e40000, 0xa0e40800,
525    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0002,
526    0x80e40002, 0xa0e40800, 0x03000042, 0x800f0003, 0x80e40003, 0xa0e40800,
527    0x03000042, 0x800f0004, 0x80e40004, 0xa0e40800, 0x03000042, 0x800f0005,
528    0x80e40005, 0xa0e40800, 0x03000042, 0x800f0006, 0x80e40006, 0xa0e40800,
529    0x03000042, 0x800f0007, 0x80e40007, 0xa0e40800, 0x03000042, 0x800f0008,
530    0x80e40008, 0xa0e40800, 0x03000005, 0x800f0000, 0x80e40000, 0xa0aa0002,
531    0x04000004, 0x800f0000, 0xa0aa0001, 0x80e40001, 0x80e40000, 0x04000004,
532    0x800f0000, 0xa0aa0003, 0x80e40002, 0x80e40000, 0x04000004, 0x800f0000,
533    0xa0aa0004, 0x80e40003, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0005,
534    0x80e40004, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0006, 0x80e40005,
535    0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0007, 0x80e40006, 0x80e40000,
536    0x04000004, 0x800f0000, 0xa0aa0008, 0x80e40007, 0x80e40000, 0x04000004,
537    0x800f0000, 0xa0aa0009, 0x80e40008, 0x80e40000, 0x03000002, 0x80030001,
538    0xb0e40000, 0xa0e4000a, 0x03000002, 0x80030002, 0xb0e40000, 0xa0e4000b,
539    0x03000002, 0x80030003, 0xb0e40000, 0xa0e4000c, 0x03000002, 0x80030004,
540    0xb0e40000, 0xa0e4000d, 0x03000002, 0x80030005, 0xb0e40000, 0xa0e4000e,
541    0x03000002, 0x80030006, 0xb0e40000, 0xa0e4000f, 0x03000002, 0x80030007,
542    0xb0e40000, 0xa0e40010, 0x03000002, 0x80030008, 0xb0e40000, 0xa0e40011,
543    0x03000002, 0x80030009, 0xb0e40000, 0xa0e40012, 0x03000042, 0x800f0001,
544    0x80e40001, 0xa0e40800, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800,
545    0x03000042, 0x800f0003, 0x80e40003, 0xa0e40800, 0x03000042, 0x800f0004,
546    0x80e40004, 0xa0e40800, 0x03000042, 0x800f0005, 0x80e40005, 0xa0e40800,
547    0x03000042, 0x800f0006, 0x80e40006, 0xa0e40800, 0x03000042, 0x800f0007,
548    0x80e40007, 0xa0e40800, 0x03000042, 0x800f0008, 0x80e40008, 0xa0e40800,
549    0x03000042, 0x800f0009, 0x80e40009, 0xa0e40800, 0x04000004, 0x800f0000,
550    0xa0aa000a, 0x80e40001, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa000b,
551    0x80e40002, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa000c, 0x80e40003,
552    0x80e40000, 0x04000004, 0x800f0000, 0xa0aa000d, 0x80e40004, 0x80e40000,
553    0x04000004, 0x800f0000, 0xa0aa000e, 0x80e40005, 0x80e40000, 0x04000004,
554    0x800f0000, 0xa0aa000f, 0x80e40006, 0x80e40000, 0x04000004, 0x800f0000,
555    0xa0aa0010, 0x80e40007, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0011,
556    0x80e40008, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0012, 0x80e40009,
557    0x80e40000, 0x03000002, 0x80030001, 0xb0e40000, 0xa0e40013, 0x03000002,
558    0x80030002, 0xb0e40000, 0xa0e40014, 0x03000002, 0x80030003, 0xb0e40000,
559    0xa0e40015, 0x03000002, 0x80030004, 0xb0e40000, 0xa0e40016, 0x03000002,
560    0x80030005, 0xb0e40000, 0xa0e40017, 0x03000002, 0x80030006, 0xb0e40000,
561    0xa0e40018, 0x03000002, 0x80030007, 0xb0e40000, 0xa0e40019, 0x03000042,
562    0x800f0001, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0002, 0x80e40002,
563    0xa0e40800, 0x03000042, 0x800f0003, 0x80e40003, 0xa0e40800, 0x03000042,
564    0x800f0004, 0x80e40004, 0xa0e40800, 0x03000042, 0x800f0005, 0x80e40005,
565    0xa0e40800, 0x03000042, 0x800f0006, 0x80e40006, 0xa0e40800, 0x03000042,
566    0x800f0007, 0x80e40007, 0xa0e40800, 0x03000042, 0x800f0008, 0xb0e40000,
567    0xa0e40800, 0x04000004, 0x800f0000, 0xa0aa0013, 0x80e40001, 0x80e40000,
568    0x04000004, 0x800f0000, 0xa0aa0014, 0x80e40002, 0x80e40000, 0x04000004,
569    0x800f0000, 0xa0aa0015, 0x80e40003, 0x80e40000, 0x04000004, 0x800f0000,
570    0xa0aa0016, 0x80e40004, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0017,
571    0x80e40005, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0018, 0x80e40006,
572    0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0019, 0x80e40007, 0x80e40000,
573    0x03000005, 0x800f0000, 0x80e40000, 0x90e40000, 0x03000002, 0x800a0001,
574    0xb1550000, 0xa0e40000, 0x03000002, 0x80050001, 0xb1000000, 0xa0e40000,
575    0x04000058, 0x80010001, 0x81000001, 0xa000001a, 0xa055001a, 0x04000058,
576    0x80020001, 0x81550001, 0xa000001a, 0xa055001a, 0x03000002, 0x80010001,
577    0x80000001, 0x80550001, 0x04000058, 0x80010001, 0x81000001, 0xa000001a,
578    0xa055001a, 0x04000058, 0x80020001, 0x80aa0001, 0xa000001a, 0xa055001a,
579    0x04000058, 0x80040001, 0x80ff0001, 0xa000001a, 0xa055001a, 0x03000002,
580    0x80010001, 0x80000001, 0x80550001, 0x04000058, 0x80010001, 0x81000001,
581    0xa000001a, 0xa055001a, 0x03000002, 0x80010001, 0x80aa0001, 0x80000001,
582    0x04000058, 0x800f0000, 0x81000001, 0x80e40000, 0x80e40008, 0x02000001,
583    0x800f0800, 0x80e40000, 0x0000ffff
584};
585#if 0
586//
587// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
588//
589//   fxc /T ps_2_0 /Vn convolve3 /Fh tmp.h tmp.hlsl
590//
591//
592// Parameters:
593//
594//   sampler2D baseImage;
595//   float4 imgEdge;
596//   float3 kernelVals[25];
597//
598//
599// Registers:
600//
601//   Name         Reg   Size
602//   ------------ ----- ----
603//   imgEdge      c0       1
604//   kernelVals   c1      25
605//   baseImage    s0       1
606//
607
608    ps_2_0
609    def c26, 0, 1, 0, 0
610    dcl t0.xy
611    dcl v0
612    dcl_2d s0
613    add r0.xy, t0, c2
614    add r1.xy, t0, c1
615    add r2.xy, t0, c3
616    add r3.xy, t0, c4
617    add r4.xy, t0, c5
618    add r5.xy, t0, c6
619    add r6.xy, t0, c7
620    add r7.xy, t0, c8
621    add r8.xy, t0, c9
622    texld r0, r0, s0
623    texld r1, r1, s0
624    texld r2, r2, s0
625    texld r3, r3, s0
626    texld r4, r4, s0
627    texld r5, r5, s0
628    texld r6, r6, s0
629    texld r7, r7, s0
630    texld r8, r8, s0
631    mul r0, r0, c2.z
632    mad r0, c1.z, r1, r0
633    mad r0, c3.z, r2, r0
634    mad r0, c4.z, r3, r0
635    mad r0, c5.z, r4, r0
636    mad r0, c6.z, r5, r0
637    mad r0, c7.z, r6, r0
638    mad r0, c8.z, r7, r0
639    mad r0, c9.z, r8, r0
640    add r1.xy, t0, c10
641    add r2.xy, t0, c11
642    add r3.xy, t0, c12
643    add r4.xy, t0, c13
644    add r5.xy, t0, c14
645    add r6.xy, t0, c15
646    add r7.xy, t0, c16
647    add r8.xy, t0, c17
648    add r9.xy, t0, c18
649    texld r1, r1, s0
650    texld r2, r2, s0
651    texld r3, r3, s0
652    texld r4, r4, s0
653    texld r5, r5, s0
654    texld r6, r6, s0
655    texld r7, r7, s0
656    texld r8, r8, s0
657    texld r9, r9, s0
658    mad r0, c10.z, r1, r0
659    mad r0, c11.z, r2, r0
660    mad r0, c12.z, r3, r0
661    mad r0, c13.z, r4, r0
662    mad r0, c14.z, r5, r0
663    mad r0, c15.z, r6, r0
664    mad r0, c16.z, r7, r0
665    mad r0, c17.z, r8, r0
666    mad r0, c18.z, r9, r0
667    add r1.xy, t0, c19
668    add r2.xy, t0, c20
669    add r3.xy, t0, c21
670    add r4.xy, t0, c22
671    add r5.xy, t0, c23
672    add r6.xy, t0, c24
673    add r7.xy, t0, c25
674    texld r1, r1, s0
675    texld r2, r2, s0
676    texld r3, r3, s0
677    texld r4, r4, s0
678    texld r5, r5, s0
679    texld r6, r6, s0
680    texld r7, r7, s0
681    mad r0, c19.z, r1, r0
682    mad r0, c20.z, r2, r0
683    mad r0, c21.z, r3, r0
684    mad r0, c22.z, r4, r0
685    mad r0, c23.z, r5, r0
686    mad r0, c24.z, r6, r0
687    mad r0, c25.z, r7, r0
688    mul r0, r0, v0
689    add r1.yw, -t0.y, c0
690    add r1.xz, -t0.x, c0
691    cmp r1.x, -r1.x, c26.x, c26.y
692    cmp r1.y, -r1.y, c26.x, c26.y
693    add r1.x, r1.x, r1.y
694    cmp r1.x, -r1.x, c26.x, c26.y
695    cmp r1.y, r1.z, c26.x, c26.y
696    cmp r1.z, r1.w, c26.x, c26.y
697    add r1.x, r1.x, r1.y
698    cmp r1.x, -r1.x, c26.x, c26.y
699    add r1.x, r1.z, r1.x
700    cmp r0, -r1.x, r0, c26.x
701    mov oC0, r0
702
703// approximately 89 instruction slots used (25 texture, 64 arithmetic)
704#endif
705
706const DWORD convolve3[] =
707{
708    0xffff0200, 0x0039fffe, 0x42415443, 0x0000001c, 0x000000af, 0xffff0200,
709    0x00000003, 0x0000001c, 0x20000100, 0x000000a8, 0x00000058, 0x00000003,
710    0x00020001, 0x00000064, 0x00000000, 0x00000074, 0x00000002, 0x00020001,
711    0x0000007c, 0x00000000, 0x0000008c, 0x00010002, 0x00060019, 0x00000098,
712    0x00000000, 0x65736162, 0x67616d49, 0xabab0065, 0x000c0004, 0x00010001,
713    0x00000001, 0x00000000, 0x45676d69, 0x00656764, 0x00030001, 0x00040001,
714    0x00000001, 0x00000000, 0x6e72656b, 0x61566c65, 0xab00736c, 0x00030001,
715    0x00030001, 0x00000019, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369,
716    0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320,
717    0x656c6970, 0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051,
718    0xa00f001a, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x0200001f,
719    0x80000000, 0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f,
720    0x90000000, 0xa00f0800, 0x03000002, 0x80030000, 0xb0e40000, 0xa0e40002,
721    0x03000002, 0x80030001, 0xb0e40000, 0xa0e40001, 0x03000002, 0x80030002,
722    0xb0e40000, 0xa0e40003, 0x03000002, 0x80030003, 0xb0e40000, 0xa0e40004,
723    0x03000002, 0x80030004, 0xb0e40000, 0xa0e40005, 0x03000002, 0x80030005,
724    0xb0e40000, 0xa0e40006, 0x03000002, 0x80030006, 0xb0e40000, 0xa0e40007,
725    0x03000002, 0x80030007, 0xb0e40000, 0xa0e40008, 0x03000002, 0x80030008,
726    0xb0e40000, 0xa0e40009, 0x03000042, 0x800f0000, 0x80e40000, 0xa0e40800,
727    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0002,
728    0x80e40002, 0xa0e40800, 0x03000042, 0x800f0003, 0x80e40003, 0xa0e40800,
729    0x03000042, 0x800f0004, 0x80e40004, 0xa0e40800, 0x03000042, 0x800f0005,
730    0x80e40005, 0xa0e40800, 0x03000042, 0x800f0006, 0x80e40006, 0xa0e40800,
731    0x03000042, 0x800f0007, 0x80e40007, 0xa0e40800, 0x03000042, 0x800f0008,
732    0x80e40008, 0xa0e40800, 0x03000005, 0x800f0000, 0x80e40000, 0xa0aa0002,
733    0x04000004, 0x800f0000, 0xa0aa0001, 0x80e40001, 0x80e40000, 0x04000004,
734    0x800f0000, 0xa0aa0003, 0x80e40002, 0x80e40000, 0x04000004, 0x800f0000,
735    0xa0aa0004, 0x80e40003, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0005,
736    0x80e40004, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0006, 0x80e40005,
737    0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0007, 0x80e40006, 0x80e40000,
738    0x04000004, 0x800f0000, 0xa0aa0008, 0x80e40007, 0x80e40000, 0x04000004,
739    0x800f0000, 0xa0aa0009, 0x80e40008, 0x80e40000, 0x03000002, 0x80030001,
740    0xb0e40000, 0xa0e4000a, 0x03000002, 0x80030002, 0xb0e40000, 0xa0e4000b,
741    0x03000002, 0x80030003, 0xb0e40000, 0xa0e4000c, 0x03000002, 0x80030004,
742    0xb0e40000, 0xa0e4000d, 0x03000002, 0x80030005, 0xb0e40000, 0xa0e4000e,
743    0x03000002, 0x80030006, 0xb0e40000, 0xa0e4000f, 0x03000002, 0x80030007,
744    0xb0e40000, 0xa0e40010, 0x03000002, 0x80030008, 0xb0e40000, 0xa0e40011,
745    0x03000002, 0x80030009, 0xb0e40000, 0xa0e40012, 0x03000042, 0x800f0001,
746    0x80e40001, 0xa0e40800, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800,
747    0x03000042, 0x800f0003, 0x80e40003, 0xa0e40800, 0x03000042, 0x800f0004,
748    0x80e40004, 0xa0e40800, 0x03000042, 0x800f0005, 0x80e40005, 0xa0e40800,
749    0x03000042, 0x800f0006, 0x80e40006, 0xa0e40800, 0x03000042, 0x800f0007,
750    0x80e40007, 0xa0e40800, 0x03000042, 0x800f0008, 0x80e40008, 0xa0e40800,
751    0x03000042, 0x800f0009, 0x80e40009, 0xa0e40800, 0x04000004, 0x800f0000,
752    0xa0aa000a, 0x80e40001, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa000b,
753    0x80e40002, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa000c, 0x80e40003,
754    0x80e40000, 0x04000004, 0x800f0000, 0xa0aa000d, 0x80e40004, 0x80e40000,
755    0x04000004, 0x800f0000, 0xa0aa000e, 0x80e40005, 0x80e40000, 0x04000004,
756    0x800f0000, 0xa0aa000f, 0x80e40006, 0x80e40000, 0x04000004, 0x800f0000,
757    0xa0aa0010, 0x80e40007, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0011,
758    0x80e40008, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0012, 0x80e40009,
759    0x80e40000, 0x03000002, 0x80030001, 0xb0e40000, 0xa0e40013, 0x03000002,
760    0x80030002, 0xb0e40000, 0xa0e40014, 0x03000002, 0x80030003, 0xb0e40000,
761    0xa0e40015, 0x03000002, 0x80030004, 0xb0e40000, 0xa0e40016, 0x03000002,
762    0x80030005, 0xb0e40000, 0xa0e40017, 0x03000002, 0x80030006, 0xb0e40000,
763    0xa0e40018, 0x03000002, 0x80030007, 0xb0e40000, 0xa0e40019, 0x03000042,
764    0x800f0001, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0002, 0x80e40002,
765    0xa0e40800, 0x03000042, 0x800f0003, 0x80e40003, 0xa0e40800, 0x03000042,
766    0x800f0004, 0x80e40004, 0xa0e40800, 0x03000042, 0x800f0005, 0x80e40005,
767    0xa0e40800, 0x03000042, 0x800f0006, 0x80e40006, 0xa0e40800, 0x03000042,
768    0x800f0007, 0x80e40007, 0xa0e40800, 0x04000004, 0x800f0000, 0xa0aa0013,
769    0x80e40001, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0014, 0x80e40002,
770    0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0015, 0x80e40003, 0x80e40000,
771    0x04000004, 0x800f0000, 0xa0aa0016, 0x80e40004, 0x80e40000, 0x04000004,
772    0x800f0000, 0xa0aa0017, 0x80e40005, 0x80e40000, 0x04000004, 0x800f0000,
773    0xa0aa0018, 0x80e40006, 0x80e40000, 0x04000004, 0x800f0000, 0xa0aa0019,
774    0x80e40007, 0x80e40000, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000,
775    0x03000002, 0x800a0001, 0xb1550000, 0xa0e40000, 0x03000002, 0x80050001,
776    0xb1000000, 0xa0e40000, 0x04000058, 0x80010001, 0x81000001, 0xa000001a,
777    0xa055001a, 0x04000058, 0x80020001, 0x81550001, 0xa000001a, 0xa055001a,
778    0x03000002, 0x80010001, 0x80000001, 0x80550001, 0x04000058, 0x80010001,
779    0x81000001, 0xa000001a, 0xa055001a, 0x04000058, 0x80020001, 0x80aa0001,
780    0xa000001a, 0xa055001a, 0x04000058, 0x80040001, 0x80ff0001, 0xa000001a,
781    0xa055001a, 0x03000002, 0x80010001, 0x80000001, 0x80550001, 0x04000058,
782    0x80010001, 0x81000001, 0xa000001a, 0xa055001a, 0x03000002, 0x80010001,
783    0x80aa0001, 0x80000001, 0x04000058, 0x800f0000, 0x81000001, 0x80e40000,
784    0xa000001a, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
785};
786const DWORD *convolveShaders[] =
787{
788    convolve0,
789    convolve1,
790    convolve2,
791    convolve3,
792};
793
794#if 0
795//
796// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
797//
798//   fxc /T ps_2_0 /Vn lookup0 /Fh tmp.h tmp.hlsl
799//
800//
801// Parameters:
802//
803//   sampler2D baseImage;
804//   sampler2D lookupTable;
805//   float4 offset;
806//
807//
808// Registers:
809//
810//   Name         Reg   Size
811//   ------------ ----- ----
812//   offset       c0       1
813//   baseImage    s0       1
814//   lookupTable  s1       1
815//
816
817    ps_2_0
818    def c1, 0.125, 0.375, 0.625, 0.875
819    dcl t0.xy
820    dcl v0
821    dcl_2d s0
822    dcl_2d s1
823    texld r0, t0, s0
824    mov r1.y, c1.x
825    add r0, r0, -c0
826    mov r1.x, r0.x
827    mov r0.x, r0.y
828    mov r0.y, c1.y
829    mov r2.x, r0.z
830    mov r3.x, r0.w
831    mov r2.y, c1.z
832    mov r3.y, c1.w
833    texld r1, r1, s1
834    texld r0, r0, s1
835    texld r2, r2, s1
836    texld r3, r3, s1
837    mov r1.y, r0.x
838    mov r1.z, r2.x
839    mov r1.w, r3.x
840    mul r0, r1, v0
841    mov oC0, r0
842
843// approximately 19 instruction slots used (5 texture, 14 arithmetic)
844#endif
845
846const DWORD lookup0[] =
847{
848    0xffff0200, 0x0035fffe, 0x42415443, 0x0000001c, 0x0000009f, 0xffff0200,
849    0x00000003, 0x0000001c, 0x20000100, 0x00000098, 0x00000058, 0x00000003,
850    0x00020001, 0x00000064, 0x00000000, 0x00000074, 0x00010003, 0x00060001,
851    0x00000064, 0x00000000, 0x00000080, 0x00000002, 0x00020001, 0x00000088,
852    0x00000000, 0x65736162, 0x67616d49, 0xabab0065, 0x000c0004, 0x00010001,
853    0x00000001, 0x00000000, 0x6b6f6f6c, 0x61547075, 0x00656c62, 0x7366666f,
854    0xab007465, 0x00030001, 0x00040001, 0x00000001, 0x00000000, 0x325f7370,
855    0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c,
856    0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3931, 0x322e3934,
857    0x00313131, 0x05000051, 0xa00f0001, 0x3e000000, 0x3ec00000, 0x3f200000,
858    0x3f600000, 0x0200001f, 0x80000000, 0xb0030000, 0x0200001f, 0x80000000,
859    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
860    0xa00f0801, 0x03000042, 0x800f0000, 0xb0e40000, 0xa0e40800, 0x02000001,
861    0x80020001, 0xa0000001, 0x03000002, 0x800f0000, 0x80e40000, 0xa1e40000,
862    0x02000001, 0x80010001, 0x80000000, 0x02000001, 0x80010000, 0x80550000,
863    0x02000001, 0x80020000, 0xa0550001, 0x02000001, 0x80010002, 0x80aa0000,
864    0x02000001, 0x80010003, 0x80ff0000, 0x02000001, 0x80020002, 0xa0aa0001,
865    0x02000001, 0x80020003, 0xa0ff0001, 0x03000042, 0x800f0001, 0x80e40001,
866    0xa0e40801, 0x03000042, 0x800f0000, 0x80e40000, 0xa0e40801, 0x03000042,
867    0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0003, 0x80e40003,
868    0xa0e40801, 0x02000001, 0x80020001, 0x80000000, 0x02000001, 0x80040001,
869    0x80000002, 0x02000001, 0x80080001, 0x80000003, 0x03000005, 0x800f0000,
870    0x80e40001, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
871};
872#if 0
873//
874// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
875//
876//   fxc /T ps_2_0 /Vn lookup1 /Fh tmp.h tmp.hlsl
877//
878//
879// Parameters:
880//
881//   sampler2D baseImage;
882//   sampler2D lookupTable;
883//   float4 offset;
884//
885//
886// Registers:
887//
888//   Name         Reg   Size
889//   ------------ ----- ----
890//   offset       c0       1
891//   baseImage    s0       1
892//   lookupTable  s1       1
893//
894
895    ps_2_0
896    def c1, 0.125, 0.375, 0.625, 0
897    dcl t0.xy
898    dcl v0
899    dcl_2d s0
900    dcl_2d s1
901    texld r0, t0, s0
902    mov r1.y, c1.x
903    add r2.xyz, r0, -c0
904    mov r1.x, r2.x
905    mov r2.x, r2.y
906    mov r3.x, r2.z
907    mov r2.y, c1.y
908    mov r3.y, c1.z
909    texld r1, r1, s1
910    texld r2, r2, s1
911    texld r3, r3, s1
912    mov r0.x, r1.x
913    mov r0.y, r2.x
914    mov r0.z, r3.x
915    mul r0, r0, v0
916    mov oC0, r0
917
918// approximately 16 instruction slots used (4 texture, 12 arithmetic)
919#endif
920
921const DWORD lookup1[] =
922{
923    0xffff0200, 0x0035fffe, 0x42415443, 0x0000001c, 0x0000009f, 0xffff0200,
924    0x00000003, 0x0000001c, 0x20000100, 0x00000098, 0x00000058, 0x00000003,
925    0x00020001, 0x00000064, 0x00000000, 0x00000074, 0x00010003, 0x00060001,
926    0x00000064, 0x00000000, 0x00000080, 0x00000002, 0x00020001, 0x00000088,
927    0x00000000, 0x65736162, 0x67616d49, 0xabab0065, 0x000c0004, 0x00010001,
928    0x00000001, 0x00000000, 0x6b6f6f6c, 0x61547075, 0x00656c62, 0x7366666f,
929    0xab007465, 0x00030001, 0x00040001, 0x00000001, 0x00000000, 0x325f7370,
930    0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c,
931    0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3931, 0x322e3934,
932    0x00313131, 0x05000051, 0xa00f0001, 0x3e000000, 0x3ec00000, 0x3f200000,
933    0x00000000, 0x0200001f, 0x80000000, 0xb0030000, 0x0200001f, 0x80000000,
934    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
935    0xa00f0801, 0x03000042, 0x800f0000, 0xb0e40000, 0xa0e40800, 0x02000001,
936    0x80020001, 0xa0000001, 0x03000002, 0x80070002, 0x80e40000, 0xa1e40000,
937    0x02000001, 0x80010001, 0x80000002, 0x02000001, 0x80010002, 0x80550002,
938    0x02000001, 0x80010003, 0x80aa0002, 0x02000001, 0x80020002, 0xa0550001,
939    0x02000001, 0x80020003, 0xa0aa0001, 0x03000042, 0x800f0001, 0x80e40001,
940    0xa0e40801, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042,
941    0x800f0003, 0x80e40003, 0xa0e40801, 0x02000001, 0x80010000, 0x80000001,
942    0x02000001, 0x80020000, 0x80000002, 0x02000001, 0x80040000, 0x80000003,
943    0x03000005, 0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800,
944    0x80e40000, 0x0000ffff
945};
946#if 0
947//
948// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
949//
950//   fxc /T ps_2_0 /Vn lookup2 /Fh tmp.h tmp.hlsl
951//
952//
953// Parameters:
954//
955//   sampler2D baseImage;
956//   sampler2D lookupTable;
957//   float4 offset;
958//
959//
960// Registers:
961//
962//   Name         Reg   Size
963//   ------------ ----- ----
964//   offset       c0       1
965//   baseImage    s0       1
966//   lookupTable  s1       1
967//
968
969    ps_2_0
970    def c1, 0.125, 0.375, 0.625, 0.875
971    dcl t0.xy
972    dcl v0
973    dcl_2d s0
974    dcl_2d s1
975    texld r0, t0, s0
976    mov r1.y, c1.x
977    rcp r1.z, r0.w
978    mul r0.xyz, r0, r1.z
979    add r0, r0, -c0
980    mov r1.x, r0.x
981    mov r0.x, r0.y
982    mov r0.y, c1.y
983    mov r2.x, r0.z
984    mov r3.x, r0.w
985    mov r2.y, c1.z
986    mov r3.y, c1.w
987    texld r1, r1, s1
988    texld r0, r0, s1
989    texld r2, r2, s1
990    texld r3, r3, s1
991    mov r1.y, r0.x
992    mov r1.z, r2.x
993    mul r0.xyz, r3.x, r1
994    mov r0.w, r3.x
995    mul r0, r0, v0
996    mov oC0, r0
997
998// approximately 22 instruction slots used (5 texture, 17 arithmetic)
999#endif
1000
1001const DWORD lookup2[] =
1002{
1003    0xffff0200, 0x0035fffe, 0x42415443, 0x0000001c, 0x0000009f, 0xffff0200,
1004    0x00000003, 0x0000001c, 0x20000100, 0x00000098, 0x00000058, 0x00000003,
1005    0x00020001, 0x00000064, 0x00000000, 0x00000074, 0x00010003, 0x00060001,
1006    0x00000064, 0x00000000, 0x00000080, 0x00000002, 0x00020001, 0x00000088,
1007    0x00000000, 0x65736162, 0x67616d49, 0xabab0065, 0x000c0004, 0x00010001,
1008    0x00000001, 0x00000000, 0x6b6f6f6c, 0x61547075, 0x00656c62, 0x7366666f,
1009    0xab007465, 0x00030001, 0x00040001, 0x00000001, 0x00000000, 0x325f7370,
1010    0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c,
1011    0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3931, 0x322e3934,
1012    0x00313131, 0x05000051, 0xa00f0001, 0x3e000000, 0x3ec00000, 0x3f200000,
1013    0x3f600000, 0x0200001f, 0x80000000, 0xb0030000, 0x0200001f, 0x80000000,
1014    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
1015    0xa00f0801, 0x03000042, 0x800f0000, 0xb0e40000, 0xa0e40800, 0x02000001,
1016    0x80020001, 0xa0000001, 0x02000006, 0x80040001, 0x80ff0000, 0x03000005,
1017    0x80070000, 0x80e40000, 0x80aa0001, 0x03000002, 0x800f0000, 0x80e40000,
1018    0xa1e40000, 0x02000001, 0x80010001, 0x80000000, 0x02000001, 0x80010000,
1019    0x80550000, 0x02000001, 0x80020000, 0xa0550001, 0x02000001, 0x80010002,
1020    0x80aa0000, 0x02000001, 0x80010003, 0x80ff0000, 0x02000001, 0x80020002,
1021    0xa0aa0001, 0x02000001, 0x80020003, 0xa0ff0001, 0x03000042, 0x800f0001,
1022    0x80e40001, 0xa0e40801, 0x03000042, 0x800f0000, 0x80e40000, 0xa0e40801,
1023    0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0003,
1024    0x80e40003, 0xa0e40801, 0x02000001, 0x80020001, 0x80000000, 0x02000001,
1025    0x80040001, 0x80000002, 0x03000005, 0x80070000, 0x80000003, 0x80e40001,
1026    0x02000001, 0x80080000, 0x80000003, 0x03000005, 0x800f0000, 0x80e40000,
1027    0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
1028};
1029#if 0
1030//
1031// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
1032//
1033//   fxc /T ps_2_0 /Vn lookup3 /Fh tmp.h tmp.hlsl
1034//
1035//
1036// Parameters:
1037//
1038//   sampler2D baseImage;
1039//   sampler2D lookupTable;
1040//   float4 offset;
1041//
1042//
1043// Registers:
1044//
1045//   Name         Reg   Size
1046//   ------------ ----- ----
1047//   offset       c0       1
1048//   baseImage    s0       1
1049//   lookupTable  s1       1
1050//
1051
1052    ps_2_0
1053    def c1, 0.125, 0.375, 0.625, 0
1054    dcl t0.xy
1055    dcl v0
1056    dcl_2d s0
1057    dcl_2d s1
1058    texld r0, t0, s0
1059    mov r1.y, c1.x
1060    rcp r1.z, r0.w
1061    mad r2.xyz, r0, r1.z, -c0
1062    mov r1.x, r2.x
1063    mov r3.y, c1.y
1064    mov r3.x, r2.y
1065    mov r2.x, r2.z
1066    mov r2.y, c1.z
1067    texld r1, r1, s1
1068    texld r3, r3, s1
1069    texld r2, r2, s1
1070    mov r1.y, r3.x
1071    mov r1.z, r2.x
1072    mul r0.xyz, r0.w, r1
1073    mul r0, r0, v0
1074    mov oC0, r0
1075
1076// approximately 17 instruction slots used (4 texture, 13 arithmetic)
1077#endif
1078
1079const DWORD lookup3[] =
1080{
1081    0xffff0200, 0x0035fffe, 0x42415443, 0x0000001c, 0x0000009f, 0xffff0200,
1082    0x00000003, 0x0000001c, 0x20000100, 0x00000098, 0x00000058, 0x00000003,
1083    0x00020001, 0x00000064, 0x00000000, 0x00000074, 0x00010003, 0x00060001,
1084    0x00000064, 0x00000000, 0x00000080, 0x00000002, 0x00020001, 0x00000088,
1085    0x00000000, 0x65736162, 0x67616d49, 0xabab0065, 0x000c0004, 0x00010001,
1086    0x00000001, 0x00000000, 0x6b6f6f6c, 0x61547075, 0x00656c62, 0x7366666f,
1087    0xab007465, 0x00030001, 0x00040001, 0x00000001, 0x00000000, 0x325f7370,
1088    0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c,
1089    0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3931, 0x322e3934,
1090    0x00313131, 0x05000051, 0xa00f0001, 0x3e000000, 0x3ec00000, 0x3f200000,
1091    0x00000000, 0x0200001f, 0x80000000, 0xb0030000, 0x0200001f, 0x80000000,
1092    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
1093    0xa00f0801, 0x03000042, 0x800f0000, 0xb0e40000, 0xa0e40800, 0x02000001,
1094    0x80020001, 0xa0000001, 0x02000006, 0x80040001, 0x80ff0000, 0x04000004,
1095    0x80070002, 0x80e40000, 0x80aa0001, 0xa1e40000, 0x02000001, 0x80010001,
1096    0x80000002, 0x02000001, 0x80020003, 0xa0550001, 0x02000001, 0x80010003,
1097    0x80550002, 0x02000001, 0x80010002, 0x80aa0002, 0x02000001, 0x80020002,
1098    0xa0aa0001, 0x03000042, 0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042,
1099    0x800f0003, 0x80e40003, 0xa0e40801, 0x03000042, 0x800f0002, 0x80e40002,
1100    0xa0e40801, 0x02000001, 0x80020001, 0x80000003, 0x02000001, 0x80040001,
1101    0x80000002, 0x03000005, 0x80070000, 0x80ff0000, 0x80e40001, 0x03000005,
1102    0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
1103    0x0000ffff
1104};
1105const DWORD *lookupShaders[] =
1106{
1107    lookup0,
1108    lookup1,
1109    lookup2,
1110    lookup3,
1111};
1112
1113#if 0
1114//
1115// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
1116//
1117//   fxc /T ps_2_0 /Vn grad0 /Fh tmp.h tmp.hlsl
1118//
1119//
1120// Parameters:
1121//
1122//   float4 color1;
1123//   float4 color2;
1124//   float3 params;
1125//
1126//
1127// Registers:
1128//
1129//   Name         Reg   Size
1130//   ------------ ----- ----
1131//   params       c0       1
1132//   color1       c1       1
1133//   color2       c2       1
1134//
1135
1136    ps_2_0
1137    def c3, 1, -0.25, 0, 0
1138    dcl t0.xy
1139    dcl v0
1140    mov r0.xy, t0
1141    mov r0.z, c3.x
1142    dp3 r0.x, c0, r0
1143    add r0.x, r0.x, c3.y
1144    add_sat r0.x, r0.x, r0.x
1145    mov r1, c1
1146    add r1, -r1, c2
1147    mad r0, r0.x, r1, c1
1148    mul r0, r0, v0
1149    mov oC0, r0
1150
1151// approximately 10 instruction slots used
1152#endif
1153
1154const DWORD grad0[] =
1155{
1156    0xffff0200, 0x0033fffe, 0x42415443, 0x0000001c, 0x00000097, 0xffff0200,
1157    0x00000003, 0x0000001c, 0x20000100, 0x00000090, 0x00000058, 0x00010002,
1158    0x00060001, 0x00000060, 0x00000000, 0x00000070, 0x00020002, 0x000a0001,
1159    0x00000060, 0x00000000, 0x00000077, 0x00000002, 0x00020001, 0x00000080,
1160    0x00000000, 0x6f6c6f63, 0xab003172, 0x00030001, 0x00040001, 0x00000001,
1161    0x00000000, 0x6f6c6f63, 0x70003272, 0x6d617261, 0xabab0073, 0x00030001,
1162    0x00030001, 0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369,
1163    0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320,
1164    0x656c6970, 0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051,
1165    0xa00f0003, 0x3f800000, 0xbe800000, 0x00000000, 0x00000000, 0x0200001f,
1166    0x80000000, 0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x02000001,
1167    0x80030000, 0xb0e40000, 0x02000001, 0x80040000, 0xa0000003, 0x03000008,
1168    0x80010000, 0xa0e40000, 0x80e40000, 0x03000002, 0x80010000, 0x80000000,
1169    0xa0550003, 0x03000002, 0x80110000, 0x80000000, 0x80000000, 0x02000001,
1170    0x800f0001, 0xa0e40001, 0x03000002, 0x800f0001, 0x81e40001, 0xa0e40002,
1171    0x04000004, 0x800f0000, 0x80000000, 0x80e40001, 0xa0e40001, 0x03000005,
1172    0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
1173    0x0000ffff
1174};
1175#if 0
1176//
1177// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
1178//
1179//   fxc /T ps_2_0 /Vn grad1 /Fh tmp.h tmp.hlsl
1180//
1181//
1182// Parameters:
1183//
1184//   float4 color1;
1185//   float4 color2;
1186//   float3 params;
1187//
1188//
1189// Registers:
1190//
1191//   Name         Reg   Size
1192//   ------------ ----- ----
1193//   params       c0       1
1194//   color1       c1       1
1195//   color2       c2       1
1196//
1197
1198    ps_2_0
1199    def c3, 1, -0.25, -0.5, 2
1200    dcl t0.xy
1201    dcl v0
1202    mov r0.xy, t0
1203    mov r0.z, c3.x
1204    dp3 r0.x, c0, r0
1205    add r0.x, r0.x, c3.y
1206    frc r0.x, r0.x
1207    add r0.x, r0.x, c3.z
1208    abs r0.x, r0.x
1209    mad r0.x, r0.x, -c3.w, c3.x
1210    mov r1, c1
1211    add r1, -r1, c2
1212    mad r0, r0.x, r1, c1
1213    mul r0, r0, v0
1214    mov oC0, r0
1215
1216// approximately 13 instruction slots used
1217#endif
1218
1219const DWORD grad1[] =
1220{
1221    0xffff0200, 0x0033fffe, 0x42415443, 0x0000001c, 0x00000097, 0xffff0200,
1222    0x00000003, 0x0000001c, 0x20000100, 0x00000090, 0x00000058, 0x00010002,
1223    0x00060001, 0x00000060, 0x00000000, 0x00000070, 0x00020002, 0x000a0001,
1224    0x00000060, 0x00000000, 0x00000077, 0x00000002, 0x00020001, 0x00000080,
1225    0x00000000, 0x6f6c6f63, 0xab003172, 0x00030001, 0x00040001, 0x00000001,
1226    0x00000000, 0x6f6c6f63, 0x70003272, 0x6d617261, 0xabab0073, 0x00030001,
1227    0x00030001, 0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369,
1228    0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320,
1229    0x656c6970, 0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051,
1230    0xa00f0003, 0x3f800000, 0xbe800000, 0xbf000000, 0x40000000, 0x0200001f,
1231    0x80000000, 0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x02000001,
1232    0x80030000, 0xb0e40000, 0x02000001, 0x80040000, 0xa0000003, 0x03000008,
1233    0x80010000, 0xa0e40000, 0x80e40000, 0x03000002, 0x80010000, 0x80000000,
1234    0xa0550003, 0x02000013, 0x80010000, 0x80000000, 0x03000002, 0x80010000,
1235    0x80000000, 0xa0aa0003, 0x02000023, 0x80010000, 0x80000000, 0x04000004,
1236    0x80010000, 0x80000000, 0xa1ff0003, 0xa0000003, 0x02000001, 0x800f0001,
1237    0xa0e40001, 0x03000002, 0x800f0001, 0x81e40001, 0xa0e40002, 0x04000004,
1238    0x800f0000, 0x80000000, 0x80e40001, 0xa0e40001, 0x03000005, 0x800f0000,
1239    0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
1240};
1241#if 0
1242//
1243// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
1244//
1245//   fxc /T ps_2_0 /Vn grad2 /Fh tmp.h tmp.hlsl
1246//
1247//
1248// Parameters:
1249//
1250//   float4 color1;
1251//   float4 color2;
1252//   sampler2D mask;
1253//   float3 params;
1254//
1255//
1256// Registers:
1257//
1258//   Name         Reg   Size
1259//   ------------ ----- ----
1260//   params       c0       1
1261//   color1       c1       1
1262//   color2       c2       1
1263//   mask         s0       1
1264//
1265
1266    ps_2_0
1267    def c3, 1, -0.25, 0, 0
1268    dcl t0.xy
1269    dcl t1.xy
1270    dcl v0
1271    dcl_2d s0
1272    texld r0, t0, s0
1273    mov r0.xy, t1
1274    mov r0.z, c3.x
1275    dp3 r0.x, c0, r0
1276    add r0.x, r0.x, c3.y
1277    add_sat r0.x, r0.x, r0.x
1278    mov r1, c1
1279    add r1, -r1, c2
1280    mad r1, r0.x, r1, c1
1281    mul r0, r0.w, r1
1282    mul r0, r0, v0
1283    mov oC0, r0
1284
1285// approximately 12 instruction slots used (1 texture, 11 arithmetic)
1286#endif
1287
1288const DWORD grad2[] =
1289{
1290    0xffff0200, 0x003dfffe, 0x42415443, 0x0000001c, 0x000000bf, 0xffff0200,
1291    0x00000004, 0x0000001c, 0x20000100, 0x000000b8, 0x0000006c, 0x00010002,
1292    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00020002, 0x000a0001,
1293    0x00000074, 0x00000000, 0x0000008b, 0x00000003, 0x00020001, 0x00000090,
1294    0x00000000, 0x000000a0, 0x00000002, 0x00020001, 0x000000a8, 0x00000000,
1295    0x6f6c6f63, 0xab003172, 0x00030001, 0x00040001, 0x00000001, 0x00000000,
1296    0x6f6c6f63, 0x6d003272, 0x006b7361, 0x000c0004, 0x00010001, 0x00000001,
1297    0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001, 0x00000001,
1298    0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820,
1299    0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072,
1300    0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003, 0x3f800000,
1301    0xbe800000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000, 0xb0030000,
1302    0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000, 0x900f0000,
1303    0x0200001f, 0x90000000, 0xa00f0800, 0x03000042, 0x800f0000, 0xb0e40000,
1304    0xa0e40800, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
1305    0xa0000003, 0x03000008, 0x80010000, 0xa0e40000, 0x80e40000, 0x03000002,
1306    0x80010000, 0x80000000, 0xa0550003, 0x03000002, 0x80110000, 0x80000000,
1307    0x80000000, 0x02000001, 0x800f0001, 0xa0e40001, 0x03000002, 0x800f0001,
1308    0x81e40001, 0xa0e40002, 0x04000004, 0x800f0001, 0x80000000, 0x80e40001,
1309    0xa0e40001, 0x03000005, 0x800f0000, 0x80ff0000, 0x80e40001, 0x03000005,
1310    0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
1311    0x0000ffff
1312};
1313#if 0
1314//
1315// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
1316//
1317//   fxc /T ps_2_0 /Vn grad3 /Fh tmp.h tmp.hlsl
1318//
1319//
1320// Parameters:
1321//
1322//   float4 color1;
1323//   float4 color2;
1324//   sampler2D mask;
1325//   float3 params;
1326//
1327//
1328// Registers:
1329//
1330//   Name         Reg   Size
1331//   ------------ ----- ----
1332//   params       c0       1
1333//   color1       c1       1
1334//   color2       c2       1
1335//   mask         s0       1
1336//
1337
1338    ps_2_0
1339    def c3, 1, -0.25, -0.5, 2
1340    dcl t0.xy
1341    dcl t1.xy
1342    dcl v0
1343    dcl_2d s0
1344    texld r0, t0, s0
1345    mov r0.xy, t1
1346    mov r0.z, c3.x
1347    dp3 r0.x, c0, r0
1348    add r0.x, r0.x, c3.y
1349    frc r0.x, r0.x
1350    add r0.x, r0.x, c3.z
1351    abs r0.x, r0.x
1352    mad r0.x, r0.x, -c3.w, c3.x
1353    mov r1, c1
1354    add r1, -r1, c2
1355    mad r1, r0.x, r1, c1
1356    mul r0, r0.w, r1
1357    mul r0, r0, v0
1358    mov oC0, r0
1359
1360// approximately 15 instruction slots used (1 texture, 14 arithmetic)
1361#endif
1362
1363const DWORD grad3[] =
1364{
1365    0xffff0200, 0x003dfffe, 0x42415443, 0x0000001c, 0x000000bf, 0xffff0200,
1366    0x00000004, 0x0000001c, 0x20000100, 0x000000b8, 0x0000006c, 0x00010002,
1367    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00020002, 0x000a0001,
1368    0x00000074, 0x00000000, 0x0000008b, 0x00000003, 0x00020001, 0x00000090,
1369    0x00000000, 0x000000a0, 0x00000002, 0x00020001, 0x000000a8, 0x00000000,
1370    0x6f6c6f63, 0xab003172, 0x00030001, 0x00040001, 0x00000001, 0x00000000,
1371    0x6f6c6f63, 0x6d003272, 0x006b7361, 0x000c0004, 0x00010001, 0x00000001,
1372    0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001, 0x00000001,
1373    0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820,
1374    0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072,
1375    0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003, 0x3f800000,
1376    0xbe800000, 0xbf000000, 0x40000000, 0x0200001f, 0x80000000, 0xb0030000,
1377    0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000, 0x900f0000,
1378    0x0200001f, 0x90000000, 0xa00f0800, 0x03000042, 0x800f0000, 0xb0e40000,
1379    0xa0e40800, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
1380    0xa0000003, 0x03000008, 0x80010000, 0xa0e40000, 0x80e40000, 0x03000002,
1381    0x80010000, 0x80000000, 0xa0550003, 0x02000013, 0x80010000, 0x80000000,
1382    0x03000002, 0x80010000, 0x80000000, 0xa0aa0003, 0x02000023, 0x80010000,
1383    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0003, 0xa0000003,
1384    0x02000001, 0x800f0001, 0xa0e40001, 0x03000002, 0x800f0001, 0x81e40001,
1385    0xa0e40002, 0x04000004, 0x800f0001, 0x80000000, 0x80e40001, 0xa0e40001,
1386    0x03000005, 0x800f0000, 0x80ff0000, 0x80e40001, 0x03000005, 0x800f0000,
1387    0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
1388};
1389const DWORD *gradShaders[] =
1390{
1391    grad0,
1392    grad1,
1393    grad2,
1394    grad3,
1395};
1396
1397#if 0
1398//
1399// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
1400//
1401//   fxc /T ps_2_0 /Vn linear0 /Fh tmp.h tmp.hlsl
1402//
1403//
1404// Parameters:
1405//
1406//   sampler2D colors;
1407//   float2 fractions[4];
1408//   float3 params;
1409//
1410//
1411// Registers:
1412//
1413//   Name         Reg   Size
1414//   ------------ ----- ----
1415//   fractions    c0       3
1416//   params       c16      1
1417//   colors       s0       1
1418//
1419
1420    ps_2_0
1421    def c3, 1, 0, 0.5, -1
1422    def c4, 1, 0.5, 0.0625, 0.03125
1423    dcl t0.xy
1424    dcl v0
1425    dcl_2d s0
1426    mov r0.z, c3.x
1427    mov r0.xy, t0
1428    dp3 r0.x, c16, r0
1429    add r0.y, r0.x, -c0.x
1430    mul_sat r0.y, r0.y, c0.y
1431    add r0.z, r0.x, -c1.x
1432    mul_sat r0.z, r0.z, c1.y
1433    add r0.y, r0.y, r0.z
1434    add r0.z, r0.x, -c2.x
1435    mul_sat r0.z, r0.z, c2.y
1436    add r0.y, r0.y, r0.z
1437    frc r0.z, r0.y
1438    add r0.y, r0.y, -r0.z
1439    add r0.w, r0.y, c3.x
1440    mad r1.x, r0.w, c4.z, c4.w
1441    add r0.w, r0.x, c3.w
1442    mad r2.x, r0.y, c4.z, c4.w
1443    mov r2.y, c3.z
1444    mov r1.y, c3.z
1445    mov r3.xy, c4
1446    mov r4.xy, c3.yzxw
1447    texld r2, r2, s0
1448    texld r1, r1, s0
1449    texld r3, r3, s0
1450    texld r4, r4, s0
1451    lrp r5, r0.z, r1, r2
1452    cmp r1, r0.w, r3, r5
1453    cmp r0, -r0.x, r4, r1
1454    mul r0, r0, v0
1455    mov oC0, r0
1456
1457// approximately 30 instruction slots used (4 texture, 26 arithmetic)
1458#endif
1459
1460const DWORD linear0[] =
1461{
1462    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
1463    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
1464    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020003,
1465    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
1466    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
1467    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
1468    0x00000004, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
1469    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
1470    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
1471    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
1472    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0004,
1473    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x0200001f, 0x80000000,
1474    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
1475    0xa00f0800, 0x02000001, 0x80040000, 0xa0000003, 0x02000001, 0x80030000,
1476    0xb0e40000, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000002,
1477    0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
1478    0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001, 0x03000005,
1479    0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000,
1480    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002, 0x03000005,
1481    0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000, 0x80550000,
1482    0x80aa0000, 0x02000013, 0x80040000, 0x80550000, 0x03000002, 0x80020000,
1483    0x80550000, 0x81aa0000, 0x03000002, 0x80080000, 0x80550000, 0xa0000003,
1484    0x04000004, 0x80010001, 0x80ff0000, 0xa0aa0004, 0xa0ff0004, 0x03000002,
1485    0x80080000, 0x80000000, 0xa0ff0003, 0x04000004, 0x80010002, 0x80550000,
1486    0xa0aa0004, 0xa0ff0004, 0x02000001, 0x80020002, 0xa0aa0003, 0x02000001,
1487    0x80020001, 0xa0aa0003, 0x02000001, 0x80030003, 0xa0e40004, 0x02000001,
1488    0x80030004, 0xa0c90003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800,
1489    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0003,
1490    0x80e40003, 0xa0e40800, 0x03000042, 0x800f0004, 0x80e40004, 0xa0e40800,
1491    0x04000012, 0x800f0005, 0x80aa0000, 0x80e40001, 0x80e40002, 0x04000058,
1492    0x800f0001, 0x80ff0000, 0x80e40003, 0x80e40005, 0x04000058, 0x800f0000,
1493    0x81000000, 0x80e40004, 0x80e40001, 0x03000005, 0x800f0000, 0x80e40000,
1494    0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
1495};
1496#if 0
1497//
1498// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
1499//
1500//   fxc /T ps_2_0 /Vn linear1 /Fh tmp.h tmp.hlsl
1501//
1502//
1503// Parameters:
1504//
1505//   sampler2D colors;
1506//   float2 fractions[4];
1507//   float3 params;
1508//
1509//
1510// Registers:
1511//
1512//   Name         Reg   Size
1513//   ------------ ----- ----
1514//   fractions    c0       3
1515//   params       c16      1
1516//   colors       s0       1
1517//
1518
1519    ps_2_0
1520    def c3, 1, 0.5, -0.5, 2
1521    def c4, 0.0625, 0.03125, 0, 0
1522    dcl t0.xy
1523    dcl v0
1524    dcl_2d s0
1525    mov r0.xy, t0
1526    mov r0.z, c3.x
1527    dp3 r0.x, c16, r0
1528    mul r0.x, r0.x, c3.y
1529    frc r0.x, r0.x
1530    add r0.x, r0.x, c3.z
1531    abs r0.x, r0.x
1532    mad r0.x, r0.x, -c3.w, c3.x
1533    add r0.y, r0.x, -c0.x
1534    mul_sat r0.y, r0.y, c0.y
1535    add r0.z, r0.x, -c1.x
1536    add r0.x, r0.x, -c2.x
1537    mul_sat r0.z, r0.z, c1.y
1538    add r0.y, r0.y, r0.z
1539    mul_sat r0.x, r0.x, c2.y
1540    add r0.x, r0.y, r0.x
1541    frc r0.y, r0.x
1542    add r0.x, r0.x, -r0.y
1543    add r0.z, r0.x, c3.x
1544    mad r1.x, r0.x, c4.x, c4.y
1545    mad r2.x, r0.z, c4.x, c4.y
1546    mov r2.y, c3.y
1547    mov r1.y, c3.y
1548    texld r2, r2, s0
1549    texld r1, r1, s0
1550    lrp r3, r0.y, r2, r1
1551    mul r0, r3, v0
1552    mov oC0, r0
1553
1554// approximately 28 instruction slots used (2 texture, 26 arithmetic)
1555#endif
1556
1557const DWORD linear1[] =
1558{
1559    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
1560    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
1561    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020003,
1562    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
1563    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
1564    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
1565    0x00000004, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
1566    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
1567    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
1568    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
1569    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0004,
1570    0x3d800000, 0x3d000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
1571    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
1572    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
1573    0xa0000003, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000005,
1574    0x80010000, 0x80000000, 0xa0550003, 0x02000013, 0x80010000, 0x80000000,
1575    0x03000002, 0x80010000, 0x80000000, 0xa0aa0003, 0x02000023, 0x80010000,
1576    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0003, 0xa0000003,
1577    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
1578    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
1579    0x03000002, 0x80010000, 0x80000000, 0xa1000002, 0x03000005, 0x80140000,
1580    0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
1581    0x03000005, 0x80110000, 0x80000000, 0xa0550002, 0x03000002, 0x80010000,
1582    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
1583    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
1584    0xa0000003, 0x04000004, 0x80010001, 0x80000000, 0xa0000004, 0xa0550004,
1585    0x04000004, 0x80010002, 0x80aa0000, 0xa0000004, 0xa0550004, 0x02000001,
1586    0x80020002, 0xa0550003, 0x02000001, 0x80020001, 0xa0550003, 0x03000042,
1587    0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042, 0x800f0001, 0x80e40001,
1588    0xa0e40800, 0x04000012, 0x800f0003, 0x80550000, 0x80e40002, 0x80e40001,
1589    0x03000005, 0x800f0000, 0x80e40003, 0x90e40000, 0x02000001, 0x800f0800,
1590    0x80e40000, 0x0000ffff
1591};
1592#if 0
1593//
1594// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
1595//
1596//   fxc /T ps_2_0 /Vn linear2 /Fh tmp.h tmp.hlsl
1597//
1598//
1599// Parameters:
1600//
1601//   sampler2D colors;
1602//   float2 fractions[4];
1603//   float3 params;
1604//
1605//
1606// Registers:
1607//
1608//   Name         Reg   Size
1609//   ------------ ----- ----
1610//   fractions    c0       3
1611//   params       c16      1
1612//   colors       s0       1
1613//
1614
1615    ps_2_0
1616    def c3, 1, 0.0625, 0.03125, 0.5
1617    dcl t0.xy
1618    dcl v0
1619    dcl_2d s0
1620    mov r0.xy, t0
1621    mov r0.z, c3.x
1622    dp3 r0.x, c16, r0
1623    frc r0.x, r0.x
1624    add r0.y, r0.x, -c0.x
1625    mul_sat r0.y, r0.y, c0.y
1626    add r0.z, r0.x, -c1.x
1627    add r0.x, r0.x, -c2.x
1628    mul_sat r0.z, r0.z, c1.y
1629    add r0.y, r0.y, r0.z
1630    mul_sat r0.x, r0.x, c2.y
1631    add r0.x, r0.y, r0.x
1632    frc r0.y, r0.x
1633    add r0.x, r0.x, -r0.y
1634    add r0.z, r0.x, c3.x
1635    mad r1.x, r0.x, c3.y, c3.z
1636    mad r2.x, r0.z, c3.y, c3.z
1637    mov r2.y, c3.w
1638    mov r1.y, c3.w
1639    texld r2, r2, s0
1640    texld r1, r1, s0
1641    lrp r3, r0.y, r2, r1
1642    mul r0, r3, v0
1643    mov oC0, r0
1644
1645// approximately 24 instruction slots used (2 texture, 22 arithmetic)
1646#endif
1647
1648const DWORD linear2[] =
1649{
1650    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
1651    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
1652    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020003,
1653    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
1654    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
1655    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
1656    0x00000004, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
1657    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
1658    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
1659    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
1660    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x0200001f, 0x80000000,
1661    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
1662    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
1663    0xa0000003, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x02000013,
1664    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
1665    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
1666    0x80000000, 0xa1000001, 0x03000002, 0x80010000, 0x80000000, 0xa1000002,
1667    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
1668    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550002,
1669    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
1670    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
1671    0x80040000, 0x80000000, 0xa0000003, 0x04000004, 0x80010001, 0x80000000,
1672    0xa0550003, 0xa0aa0003, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550003,
1673    0xa0aa0003, 0x02000001, 0x80020002, 0xa0ff0003, 0x02000001, 0x80020001,
1674    0xa0ff0003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042,
1675    0x800f0001, 0x80e40001, 0xa0e40800, 0x04000012, 0x800f0003, 0x80550000,
1676    0x80e40002, 0x80e40001, 0x03000005, 0x800f0000, 0x80e40003, 0x90e40000,
1677    0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
1678};
1679#if 0
1680//
1681// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
1682//
1683//   fxc /T ps_2_0 /Vn linear4 /Fh tmp.h tmp.hlsl
1684//
1685//
1686// Parameters:
1687//
1688//   sampler2D colors;
1689//   float2 fractions[8];
1690//   float3 params;
1691//
1692//
1693// Registers:
1694//
1695//   Name         Reg   Size
1696//   ------------ ----- ----
1697//   fractions    c0       7
1698//   params       c16      1
1699//   colors       s0       1
1700//
1701
1702    ps_2_0
1703    def c7, 1, 0, 0.5, -1
1704    def c8, 1, 0.5, 0.0625, 0.03125
1705    dcl t0.xy
1706    dcl v0
1707    dcl_2d s0
1708    mov r0.z, c7.x
1709    mov r0.xy, t0
1710    dp3 r0.x, c16, r0
1711    add r0.y, r0.x, -c0.x
1712    mul_sat r0.y, r0.y, c0.y
1713    add r0.z, r0.x, -c1.x
1714    mul_sat r0.z, r0.z, c1.y
1715    add r0.y, r0.y, r0.z
1716    add r0.z, r0.x, -c2.x
1717    mul_sat r0.z, r0.z, c2.y
1718    add r0.y, r0.y, r0.z
1719    add r0.z, r0.x, -c3.x
1720    mul_sat r0.z, r0.z, c3.y
1721    add r0.y, r0.y, r0.z
1722    add r0.z, r0.x, -c4.x
1723    mul_sat r0.z, r0.z, c4.y
1724    add r0.y, r0.y, r0.z
1725    add r0.z, r0.x, -c5.x
1726    mul_sat r0.z, r0.z, c5.y
1727    add r0.y, r0.y, r0.z
1728    add r0.z, r0.x, -c6.x
1729    mul_sat r0.z, r0.z, c6.y
1730    add r0.y, r0.y, r0.z
1731    frc r0.z, r0.y
1732    add r0.y, r0.y, -r0.z
1733    add r0.w, r0.y, c7.x
1734    mad r1.x, r0.w, c8.z, c8.w
1735    add r0.w, r0.x, c7.w
1736    mad r2.x, r0.y, c8.z, c8.w
1737    mov r2.y, c7.z
1738    mov r1.y, c7.z
1739    mov r3.xy, c8
1740    mov r4.xy, c7.yzxw
1741    texld r2, r2, s0
1742    texld r1, r1, s0
1743    texld r3, r3, s0
1744    texld r4, r4, s0
1745    lrp r5, r0.z, r1, r2
1746    cmp r1, r0.w, r3, r5
1747    cmp r0, -r0.x, r4, r1
1748    mul r0, r0, v0
1749    mov oC0, r0
1750
1751// approximately 42 instruction slots used (4 texture, 38 arithmetic)
1752#endif
1753
1754const DWORD linear4[] =
1755{
1756    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
1757    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
1758    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020007,
1759    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
1760    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
1761    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
1762    0x00000008, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
1763    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
1764    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
1765    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
1766    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0008,
1767    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x0200001f, 0x80000000,
1768    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
1769    0xa00f0800, 0x02000001, 0x80040000, 0xa0000007, 0x02000001, 0x80030000,
1770    0xb0e40000, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000002,
1771    0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
1772    0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001, 0x03000005,
1773    0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000,
1774    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002, 0x03000005,
1775    0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000, 0x80550000,
1776    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003, 0x03000005,
1777    0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000, 0x80550000,
1778    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004, 0x03000005,
1779    0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000, 0x80550000,
1780    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005, 0x03000005,
1781    0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000,
1782    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000006, 0x03000005,
1783    0x80140000, 0x80aa0000, 0xa0550006, 0x03000002, 0x80020000, 0x80550000,
1784    0x80aa0000, 0x02000013, 0x80040000, 0x80550000, 0x03000002, 0x80020000,
1785    0x80550000, 0x81aa0000, 0x03000002, 0x80080000, 0x80550000, 0xa0000007,
1786    0x04000004, 0x80010001, 0x80ff0000, 0xa0aa0008, 0xa0ff0008, 0x03000002,
1787    0x80080000, 0x80000000, 0xa0ff0007, 0x04000004, 0x80010002, 0x80550000,
1788    0xa0aa0008, 0xa0ff0008, 0x02000001, 0x80020002, 0xa0aa0007, 0x02000001,
1789    0x80020001, 0xa0aa0007, 0x02000001, 0x80030003, 0xa0e40008, 0x02000001,
1790    0x80030004, 0xa0c90007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800,
1791    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0003,
1792    0x80e40003, 0xa0e40800, 0x03000042, 0x800f0004, 0x80e40004, 0xa0e40800,
1793    0x04000012, 0x800f0005, 0x80aa0000, 0x80e40001, 0x80e40002, 0x04000058,
1794    0x800f0001, 0x80ff0000, 0x80e40003, 0x80e40005, 0x04000058, 0x800f0000,
1795    0x81000000, 0x80e40004, 0x80e40001, 0x03000005, 0x800f0000, 0x80e40000,
1796    0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
1797};
1798#if 0
1799//
1800// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
1801//
1802//   fxc /T ps_2_0 /Vn linear5 /Fh tmp.h tmp.hlsl
1803//
1804//
1805// Parameters:
1806//
1807//   sampler2D colors;
1808//   float2 fractions[8];
1809//   float3 params;
1810//
1811//
1812// Registers:
1813//
1814//   Name         Reg   Size
1815//   ------------ ----- ----
1816//   fractions    c0       7
1817//   params       c16      1
1818//   colors       s0       1
1819//
1820
1821    ps_2_0
1822    def c7, 1, 0.5, -0.5, 2
1823    def c8, 0.0625, 0.03125, 0, 0
1824    dcl t0.xy
1825    dcl v0
1826    dcl_2d s0
1827    mov r0.xy, t0
1828    mov r0.z, c7.x
1829    dp3 r0.x, c16, r0
1830    mul r0.x, r0.x, c7.y
1831    frc r0.x, r0.x
1832    add r0.x, r0.x, c7.z
1833    abs r0.x, r0.x
1834    mad r0.x, r0.x, -c7.w, c7.x
1835    add r0.y, r0.x, -c0.x
1836    mul_sat r0.y, r0.y, c0.y
1837    add r0.z, r0.x, -c1.x
1838    mul_sat r0.z, r0.z, c1.y
1839    add r0.y, r0.y, r0.z
1840    add r0.z, r0.x, -c2.x
1841    mul_sat r0.z, r0.z, c2.y
1842    add r0.y, r0.y, r0.z
1843    add r0.z, r0.x, -c3.x
1844    mul_sat r0.z, r0.z, c3.y
1845    add r0.y, r0.y, r0.z
1846    add r0.z, r0.x, -c4.x
1847    mul_sat r0.z, r0.z, c4.y
1848    add r0.y, r0.y, r0.z
1849    add r0.z, r0.x, -c5.x
1850    add r0.x, r0.x, -c6.x
1851    mul_sat r0.z, r0.z, c5.y
1852    add r0.y, r0.y, r0.z
1853    mul_sat r0.x, r0.x, c6.y
1854    add r0.x, r0.y, r0.x
1855    frc r0.y, r0.x
1856    add r0.x, r0.x, -r0.y
1857    add r0.z, r0.x, c7.x
1858    mad r1.x, r0.x, c8.x, c8.y
1859    mad r2.x, r0.z, c8.x, c8.y
1860    mov r2.y, c7.y
1861    mov r1.y, c7.y
1862    texld r2, r2, s0
1863    texld r1, r1, s0
1864    lrp r3, r0.y, r2, r1
1865    mul r0, r3, v0
1866    mov oC0, r0
1867
1868// approximately 40 instruction slots used (2 texture, 38 arithmetic)
1869#endif
1870
1871const DWORD linear5[] =
1872{
1873    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
1874    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
1875    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020007,
1876    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
1877    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
1878    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
1879    0x00000008, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
1880    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
1881    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
1882    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
1883    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0008,
1884    0x3d800000, 0x3d000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
1885    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
1886    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
1887    0xa0000007, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000005,
1888    0x80010000, 0x80000000, 0xa0550007, 0x02000013, 0x80010000, 0x80000000,
1889    0x03000002, 0x80010000, 0x80000000, 0xa0aa0007, 0x02000023, 0x80010000,
1890    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0007, 0xa0000007,
1891    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
1892    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
1893    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
1894    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002,
1895    0x03000005, 0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000,
1896    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003,
1897    0x03000005, 0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000,
1898    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004,
1899    0x03000005, 0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000,
1900    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005,
1901    0x03000002, 0x80010000, 0x80000000, 0xa1000006, 0x03000005, 0x80140000,
1902    0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
1903    0x03000005, 0x80110000, 0x80000000, 0xa0550006, 0x03000002, 0x80010000,
1904    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
1905    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
1906    0xa0000007, 0x04000004, 0x80010001, 0x80000000, 0xa0000008, 0xa0550008,
1907    0x04000004, 0x80010002, 0x80aa0000, 0xa0000008, 0xa0550008, 0x02000001,
1908    0x80020002, 0xa0550007, 0x02000001, 0x80020001, 0xa0550007, 0x03000042,
1909    0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042, 0x800f0001, 0x80e40001,
1910    0xa0e40800, 0x04000012, 0x800f0003, 0x80550000, 0x80e40002, 0x80e40001,
1911    0x03000005, 0x800f0000, 0x80e40003, 0x90e40000, 0x02000001, 0x800f0800,
1912    0x80e40000, 0x0000ffff
1913};
1914#if 0
1915//
1916// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
1917//
1918//   fxc /T ps_2_0 /Vn linear6 /Fh tmp.h tmp.hlsl
1919//
1920//
1921// Parameters:
1922//
1923//   sampler2D colors;
1924//   float2 fractions[8];
1925//   float3 params;
1926//
1927//
1928// Registers:
1929//
1930//   Name         Reg   Size
1931//   ------------ ----- ----
1932//   fractions    c0       7
1933//   params       c16      1
1934//   colors       s0       1
1935//
1936
1937    ps_2_0
1938    def c7, 1, 0.0625, 0.03125, 0.5
1939    dcl t0.xy
1940    dcl v0
1941    dcl_2d s0
1942    mov r0.xy, t0
1943    mov r0.z, c7.x
1944    dp3 r0.x, c16, r0
1945    frc r0.x, r0.x
1946    add r0.y, r0.x, -c0.x
1947    mul_sat r0.y, r0.y, c0.y
1948    add r0.z, r0.x, -c1.x
1949    mul_sat r0.z, r0.z, c1.y
1950    add r0.y, r0.y, r0.z
1951    add r0.z, r0.x, -c2.x
1952    mul_sat r0.z, r0.z, c2.y
1953    add r0.y, r0.y, r0.z
1954    add r0.z, r0.x, -c3.x
1955    mul_sat r0.z, r0.z, c3.y
1956    add r0.y, r0.y, r0.z
1957    add r0.z, r0.x, -c4.x
1958    mul_sat r0.z, r0.z, c4.y
1959    add r0.y, r0.y, r0.z
1960    add r0.z, r0.x, -c5.x
1961    add r0.x, r0.x, -c6.x
1962    mul_sat r0.z, r0.z, c5.y
1963    add r0.y, r0.y, r0.z
1964    mul_sat r0.x, r0.x, c6.y
1965    add r0.x, r0.y, r0.x
1966    frc r0.y, r0.x
1967    add r0.x, r0.x, -r0.y
1968    add r0.z, r0.x, c7.x
1969    mad r1.x, r0.x, c7.y, c7.z
1970    mad r2.x, r0.z, c7.y, c7.z
1971    mov r2.y, c7.w
1972    mov r1.y, c7.w
1973    texld r2, r2, s0
1974    texld r1, r1, s0
1975    lrp r3, r0.y, r2, r1
1976    mul r0, r3, v0
1977    mov oC0, r0
1978
1979// approximately 36 instruction slots used (2 texture, 34 arithmetic)
1980#endif
1981
1982const DWORD linear6[] =
1983{
1984    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
1985    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
1986    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020007,
1987    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
1988    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
1989    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
1990    0x00000008, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
1991    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
1992    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
1993    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
1994    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x0200001f, 0x80000000,
1995    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
1996    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
1997    0xa0000007, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x02000013,
1998    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
1999    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
2000    0x80000000, 0xa1000001, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550001,
2001    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
2002    0x80000000, 0xa1000002, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550002,
2003    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
2004    0x80000000, 0xa1000003, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550003,
2005    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
2006    0x80000000, 0xa1000004, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550004,
2007    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
2008    0x80000000, 0xa1000005, 0x03000002, 0x80010000, 0x80000000, 0xa1000006,
2009    0x03000005, 0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000,
2010    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550006,
2011    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
2012    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
2013    0x80040000, 0x80000000, 0xa0000007, 0x04000004, 0x80010001, 0x80000000,
2014    0xa0550007, 0xa0aa0007, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550007,
2015    0xa0aa0007, 0x02000001, 0x80020002, 0xa0ff0007, 0x02000001, 0x80020001,
2016    0xa0ff0007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042,
2017    0x800f0001, 0x80e40001, 0xa0e40800, 0x04000012, 0x800f0003, 0x80550000,
2018    0x80e40002, 0x80e40001, 0x03000005, 0x800f0000, 0x80e40003, 0x90e40000,
2019    0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
2020};
2021#if 0
2022//
2023// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
2024//
2025//   fxc /T ps_2_0 /Vn linear8 /Fh tmp.h tmp.hlsl
2026//
2027//
2028// Parameters:
2029//
2030//   sampler2D colors;
2031//   float2 fractions[4];
2032//   sampler2D mask;
2033//   float3 params;
2034//
2035//
2036// Registers:
2037//
2038//   Name         Reg   Size
2039//   ------------ ----- ----
2040//   fractions    c0       3
2041//   params       c16      1
2042//   mask         s0       1
2043//   colors       s1       1
2044//
2045
2046    ps_2_0
2047    def c3, 1, 0, 0.5, -1
2048    def c4, 1, 0.5, 0.0625, 0.03125
2049    dcl t0.xy
2050    dcl t1.xy
2051    dcl v0
2052    dcl_2d s0
2053    dcl_2d s1
2054    mov r0.z, c3.x
2055    mov r0.xy, t1
2056    dp3 r0.x, c16, r0
2057    add r0.y, r0.x, -c0.x
2058    mul_sat r0.y, r0.y, c0.y
2059    add r0.z, r0.x, -c1.x
2060    mul_sat r0.z, r0.z, c1.y
2061    add r0.y, r0.y, r0.z
2062    add r0.z, r0.x, -c2.x
2063    mul_sat r0.z, r0.z, c2.y
2064    add r0.y, r0.y, r0.z
2065    frc r0.z, r0.y
2066    add r0.y, r0.y, -r0.z
2067    add r0.w, r0.y, c3.x
2068    mad r1.x, r0.w, c4.z, c4.w
2069    add r0.w, r0.x, c3.w
2070    mad r2.x, r0.y, c4.z, c4.w
2071    mov r2.y, c3.z
2072    mov r1.y, c3.z
2073    mov r3.xy, c4
2074    mov r4.xy, c3.yzxw
2075    texld r2, r2, s1
2076    texld r1, r1, s1
2077    texld r3, r3, s1
2078    texld r4, r4, s1
2079    texld r5, t0, s0
2080    lrp r6, r0.z, r1, r2
2081    cmp r1, r0.w, r3, r6
2082    cmp r0, -r0.x, r4, r1
2083    mul r0, r5.w, r0
2084    mul r0, r0, v0
2085    mov oC0, r0
2086
2087// approximately 32 instruction slots used (5 texture, 27 arithmetic)
2088#endif
2089
2090const DWORD linear8[] =
2091{
2092    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
2093    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
2094    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020003,
2095    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
2096    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
2097    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
2098    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004,
2099    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
2100    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
2101    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
2102    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
2103    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0004,
2104    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x0200001f, 0x80000000,
2105    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
2106    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
2107    0xa00f0801, 0x02000001, 0x80040000, 0xa0000003, 0x02000001, 0x80030000,
2108    0xb0e40001, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000002,
2109    0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
2110    0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001, 0x03000005,
2111    0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000,
2112    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002, 0x03000005,
2113    0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000, 0x80550000,
2114    0x80aa0000, 0x02000013, 0x80040000, 0x80550000, 0x03000002, 0x80020000,
2115    0x80550000, 0x81aa0000, 0x03000002, 0x80080000, 0x80550000, 0xa0000003,
2116    0x04000004, 0x80010001, 0x80ff0000, 0xa0aa0004, 0xa0ff0004, 0x03000002,
2117    0x80080000, 0x80000000, 0xa0ff0003, 0x04000004, 0x80010002, 0x80550000,
2118    0xa0aa0004, 0xa0ff0004, 0x02000001, 0x80020002, 0xa0aa0003, 0x02000001,
2119    0x80020001, 0xa0aa0003, 0x02000001, 0x80030003, 0xa0e40004, 0x02000001,
2120    0x80030004, 0xa0c90003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801,
2121    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003,
2122    0x80e40003, 0xa0e40801, 0x03000042, 0x800f0004, 0x80e40004, 0xa0e40801,
2123    0x03000042, 0x800f0005, 0xb0e40000, 0xa0e40800, 0x04000012, 0x800f0006,
2124    0x80aa0000, 0x80e40001, 0x80e40002, 0x04000058, 0x800f0001, 0x80ff0000,
2125    0x80e40003, 0x80e40006, 0x04000058, 0x800f0000, 0x81000000, 0x80e40004,
2126    0x80e40001, 0x03000005, 0x800f0000, 0x80ff0005, 0x80e40000, 0x03000005,
2127    0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
2128    0x0000ffff
2129};
2130#if 0
2131//
2132// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
2133//
2134//   fxc /T ps_2_0 /Vn linear9 /Fh tmp.h tmp.hlsl
2135//
2136//
2137// Parameters:
2138//
2139//   sampler2D colors;
2140//   float2 fractions[4];
2141//   sampler2D mask;
2142//   float3 params;
2143//
2144//
2145// Registers:
2146//
2147//   Name         Reg   Size
2148//   ------------ ----- ----
2149//   fractions    c0       3
2150//   params       c16      1
2151//   mask         s0       1
2152//   colors       s1       1
2153//
2154
2155    ps_2_0
2156    def c3, 1, 0.5, -0.5, 2
2157    def c4, 0.0625, 0.03125, 0, 0
2158    dcl t0.xy
2159    dcl t1.xy
2160    dcl v0
2161    dcl_2d s0
2162    dcl_2d s1
2163    mov r0.xy, t1
2164    mov r0.z, c3.x
2165    dp3 r0.x, c16, r0
2166    mul r0.x, r0.x, c3.y
2167    frc r0.x, r0.x
2168    add r0.x, r0.x, c3.z
2169    abs r0.x, r0.x
2170    mad r0.x, r0.x, -c3.w, c3.x
2171    add r0.y, r0.x, -c0.x
2172    mul_sat r0.y, r0.y, c0.y
2173    add r0.z, r0.x, -c1.x
2174    add r0.x, r0.x, -c2.x
2175    mul_sat r0.z, r0.z, c1.y
2176    add r0.y, r0.y, r0.z
2177    mul_sat r0.x, r0.x, c2.y
2178    add r0.x, r0.y, r0.x
2179    frc r0.y, r0.x
2180    add r0.x, r0.x, -r0.y
2181    add r0.z, r0.x, c3.x
2182    mad r1.x, r0.x, c4.x, c4.y
2183    mad r2.x, r0.z, c4.x, c4.y
2184    mov r2.y, c3.y
2185    mov r1.y, c3.y
2186    texld r2, r2, s1
2187    texld r1, r1, s1
2188    texld r3, t0, s0
2189    lrp r4, r0.y, r2, r1
2190    mul r0, r3.w, r4
2191    mul r0, r0, v0
2192    mov oC0, r0
2193
2194// approximately 30 instruction slots used (3 texture, 27 arithmetic)
2195#endif
2196
2197const DWORD linear9[] =
2198{
2199    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
2200    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
2201    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020003,
2202    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
2203    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
2204    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
2205    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004,
2206    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
2207    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
2208    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
2209    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
2210    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0004,
2211    0x3d800000, 0x3d000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
2212    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
2213    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
2214    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
2215    0xa0000003, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000005,
2216    0x80010000, 0x80000000, 0xa0550003, 0x02000013, 0x80010000, 0x80000000,
2217    0x03000002, 0x80010000, 0x80000000, 0xa0aa0003, 0x02000023, 0x80010000,
2218    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0003, 0xa0000003,
2219    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
2220    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
2221    0x03000002, 0x80010000, 0x80000000, 0xa1000002, 0x03000005, 0x80140000,
2222    0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
2223    0x03000005, 0x80110000, 0x80000000, 0xa0550002, 0x03000002, 0x80010000,
2224    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
2225    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
2226    0xa0000003, 0x04000004, 0x80010001, 0x80000000, 0xa0000004, 0xa0550004,
2227    0x04000004, 0x80010002, 0x80aa0000, 0xa0000004, 0xa0550004, 0x02000001,
2228    0x80020002, 0xa0550003, 0x02000001, 0x80020001, 0xa0550003, 0x03000042,
2229    0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0001, 0x80e40001,
2230    0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000, 0xa0e40800, 0x04000012,
2231    0x800f0004, 0x80550000, 0x80e40002, 0x80e40001, 0x03000005, 0x800f0000,
2232    0x80ff0003, 0x80e40004, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000,
2233    0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
2234};
2235#if 0
2236//
2237// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
2238//
2239//   fxc /T ps_2_0 /Vn linear10 /Fh tmp.h tmp.hlsl
2240//
2241//
2242// Parameters:
2243//
2244//   sampler2D colors;
2245//   float2 fractions[4];
2246//   sampler2D mask;
2247//   float3 params;
2248//
2249//
2250// Registers:
2251//
2252//   Name         Reg   Size
2253//   ------------ ----- ----
2254//   fractions    c0       3
2255//   params       c16      1
2256//   mask         s0       1
2257//   colors       s1       1
2258//
2259
2260    ps_2_0
2261    def c3, 1, 0.0625, 0.03125, 0.5
2262    dcl t0.xy
2263    dcl t1.xy
2264    dcl v0
2265    dcl_2d s0
2266    dcl_2d s1
2267    mov r0.xy, t1
2268    mov r0.z, c3.x
2269    dp3 r0.x, c16, r0
2270    frc r0.x, r0.x
2271    add r0.y, r0.x, -c0.x
2272    mul_sat r0.y, r0.y, c0.y
2273    add r0.z, r0.x, -c1.x
2274    add r0.x, r0.x, -c2.x
2275    mul_sat r0.z, r0.z, c1.y
2276    add r0.y, r0.y, r0.z
2277    mul_sat r0.x, r0.x, c2.y
2278    add r0.x, r0.y, r0.x
2279    frc r0.y, r0.x
2280    add r0.x, r0.x, -r0.y
2281    add r0.z, r0.x, c3.x
2282    mad r1.x, r0.x, c3.y, c3.z
2283    mad r2.x, r0.z, c3.y, c3.z
2284    mov r2.y, c3.w
2285    mov r1.y, c3.w
2286    texld r2, r2, s1
2287    texld r1, r1, s1
2288    texld r3, t0, s0
2289    lrp r4, r0.y, r2, r1
2290    mul r0, r3.w, r4
2291    mul r0, r0, v0
2292    mov oC0, r0
2293
2294// approximately 26 instruction slots used (3 texture, 23 arithmetic)
2295#endif
2296
2297const DWORD linear10[] =
2298{
2299    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
2300    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
2301    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020003,
2302    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
2303    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
2304    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
2305    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004,
2306    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
2307    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
2308    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
2309    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
2310    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x0200001f, 0x80000000,
2311    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
2312    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
2313    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
2314    0xa0000003, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x02000013,
2315    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
2316    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
2317    0x80000000, 0xa1000001, 0x03000002, 0x80010000, 0x80000000, 0xa1000002,
2318    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
2319    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550002,
2320    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
2321    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
2322    0x80040000, 0x80000000, 0xa0000003, 0x04000004, 0x80010001, 0x80000000,
2323    0xa0550003, 0xa0aa0003, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550003,
2324    0xa0aa0003, 0x02000001, 0x80020002, 0xa0ff0003, 0x02000001, 0x80020001,
2325    0xa0ff0003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042,
2326    0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000,
2327    0xa0e40800, 0x04000012, 0x800f0004, 0x80550000, 0x80e40002, 0x80e40001,
2328    0x03000005, 0x800f0000, 0x80ff0003, 0x80e40004, 0x03000005, 0x800f0000,
2329    0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
2330};
2331#if 0
2332//
2333// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
2334//
2335//   fxc /T ps_2_0 /Vn linear12 /Fh tmp.h tmp.hlsl
2336//
2337//
2338// Parameters:
2339//
2340//   sampler2D colors;
2341//   float2 fractions[8];
2342//   sampler2D mask;
2343//   float3 params;
2344//
2345//
2346// Registers:
2347//
2348//   Name         Reg   Size
2349//   ------------ ----- ----
2350//   fractions    c0       7
2351//   params       c16      1
2352//   mask         s0       1
2353//   colors       s1       1
2354//
2355
2356    ps_2_0
2357    def c7, 1, 0, 0.5, -1
2358    def c8, 1, 0.5, 0.0625, 0.03125
2359    dcl t0.xy
2360    dcl t1.xy
2361    dcl v0
2362    dcl_2d s0
2363    dcl_2d s1
2364    mov r0.z, c7.x
2365    mov r0.xy, t1
2366    dp3 r0.x, c16, r0
2367    add r0.y, r0.x, -c0.x
2368    mul_sat r0.y, r0.y, c0.y
2369    add r0.z, r0.x, -c1.x
2370    mul_sat r0.z, r0.z, c1.y
2371    add r0.y, r0.y, r0.z
2372    add r0.z, r0.x, -c2.x
2373    mul_sat r0.z, r0.z, c2.y
2374    add r0.y, r0.y, r0.z
2375    add r0.z, r0.x, -c3.x
2376    mul_sat r0.z, r0.z, c3.y
2377    add r0.y, r0.y, r0.z
2378    add r0.z, r0.x, -c4.x
2379    mul_sat r0.z, r0.z, c4.y
2380    add r0.y, r0.y, r0.z
2381    add r0.z, r0.x, -c5.x
2382    mul_sat r0.z, r0.z, c5.y
2383    add r0.y, r0.y, r0.z
2384    add r0.z, r0.x, -c6.x
2385    mul_sat r0.z, r0.z, c6.y
2386    add r0.y, r0.y, r0.z
2387    frc r0.z, r0.y
2388    add r0.y, r0.y, -r0.z
2389    add r0.w, r0.y, c7.x
2390    mad r1.x, r0.w, c8.z, c8.w
2391    add r0.w, r0.x, c7.w
2392    mad r2.x, r0.y, c8.z, c8.w
2393    mov r2.y, c7.z
2394    mov r1.y, c7.z
2395    mov r3.xy, c8
2396    mov r4.xy, c7.yzxw
2397    texld r2, r2, s1
2398    texld r1, r1, s1
2399    texld r3, r3, s1
2400    texld r4, r4, s1
2401    texld r5, t0, s0
2402    lrp r6, r0.z, r1, r2
2403    cmp r1, r0.w, r3, r6
2404    cmp r0, -r0.x, r4, r1
2405    mul r0, r5.w, r0
2406    mul r0, r0, v0
2407    mov oC0, r0
2408
2409// approximately 44 instruction slots used (5 texture, 39 arithmetic)
2410#endif
2411
2412const DWORD linear12[] =
2413{
2414    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
2415    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
2416    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020007,
2417    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
2418    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
2419    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
2420    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008,
2421    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
2422    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
2423    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
2424    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
2425    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0008,
2426    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x0200001f, 0x80000000,
2427    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
2428    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
2429    0xa00f0801, 0x02000001, 0x80040000, 0xa0000007, 0x02000001, 0x80030000,
2430    0xb0e40001, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000002,
2431    0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
2432    0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001, 0x03000005,
2433    0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000,
2434    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002, 0x03000005,
2435    0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000, 0x80550000,
2436    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003, 0x03000005,
2437    0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000, 0x80550000,
2438    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004, 0x03000005,
2439    0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000, 0x80550000,
2440    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005, 0x03000005,
2441    0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000,
2442    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000006, 0x03000005,
2443    0x80140000, 0x80aa0000, 0xa0550006, 0x03000002, 0x80020000, 0x80550000,
2444    0x80aa0000, 0x02000013, 0x80040000, 0x80550000, 0x03000002, 0x80020000,
2445    0x80550000, 0x81aa0000, 0x03000002, 0x80080000, 0x80550000, 0xa0000007,
2446    0x04000004, 0x80010001, 0x80ff0000, 0xa0aa0008, 0xa0ff0008, 0x03000002,
2447    0x80080000, 0x80000000, 0xa0ff0007, 0x04000004, 0x80010002, 0x80550000,
2448    0xa0aa0008, 0xa0ff0008, 0x02000001, 0x80020002, 0xa0aa0007, 0x02000001,
2449    0x80020001, 0xa0aa0007, 0x02000001, 0x80030003, 0xa0e40008, 0x02000001,
2450    0x80030004, 0xa0c90007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801,
2451    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003,
2452    0x80e40003, 0xa0e40801, 0x03000042, 0x800f0004, 0x80e40004, 0xa0e40801,
2453    0x03000042, 0x800f0005, 0xb0e40000, 0xa0e40800, 0x04000012, 0x800f0006,
2454    0x80aa0000, 0x80e40001, 0x80e40002, 0x04000058, 0x800f0001, 0x80ff0000,
2455    0x80e40003, 0x80e40006, 0x04000058, 0x800f0000, 0x81000000, 0x80e40004,
2456    0x80e40001, 0x03000005, 0x800f0000, 0x80ff0005, 0x80e40000, 0x03000005,
2457    0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
2458    0x0000ffff
2459};
2460#if 0
2461//
2462// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
2463//
2464//   fxc /T ps_2_0 /Vn linear13 /Fh tmp.h tmp.hlsl
2465//
2466//
2467// Parameters:
2468//
2469//   sampler2D colors;
2470//   float2 fractions[8];
2471//   sampler2D mask;
2472//   float3 params;
2473//
2474//
2475// Registers:
2476//
2477//   Name         Reg   Size
2478//   ------------ ----- ----
2479//   fractions    c0       7
2480//   params       c16      1
2481//   mask         s0       1
2482//   colors       s1       1
2483//
2484
2485    ps_2_0
2486    def c7, 1, 0.5, -0.5, 2
2487    def c8, 0.0625, 0.03125, 0, 0
2488    dcl t0.xy
2489    dcl t1.xy
2490    dcl v0
2491    dcl_2d s0
2492    dcl_2d s1
2493    mov r0.xy, t1
2494    mov r0.z, c7.x
2495    dp3 r0.x, c16, r0
2496    mul r0.x, r0.x, c7.y
2497    frc r0.x, r0.x
2498    add r0.x, r0.x, c7.z
2499    abs r0.x, r0.x
2500    mad r0.x, r0.x, -c7.w, c7.x
2501    add r0.y, r0.x, -c0.x
2502    mul_sat r0.y, r0.y, c0.y
2503    add r0.z, r0.x, -c1.x
2504    mul_sat r0.z, r0.z, c1.y
2505    add r0.y, r0.y, r0.z
2506    add r0.z, r0.x, -c2.x
2507    mul_sat r0.z, r0.z, c2.y
2508    add r0.y, r0.y, r0.z
2509    add r0.z, r0.x, -c3.x
2510    mul_sat r0.z, r0.z, c3.y
2511    add r0.y, r0.y, r0.z
2512    add r0.z, r0.x, -c4.x
2513    mul_sat r0.z, r0.z, c4.y
2514    add r0.y, r0.y, r0.z
2515    add r0.z, r0.x, -c5.x
2516    add r0.x, r0.x, -c6.x
2517    mul_sat r0.z, r0.z, c5.y
2518    add r0.y, r0.y, r0.z
2519    mul_sat r0.x, r0.x, c6.y
2520    add r0.x, r0.y, r0.x
2521    frc r0.y, r0.x
2522    add r0.x, r0.x, -r0.y
2523    add r0.z, r0.x, c7.x
2524    mad r1.x, r0.x, c8.x, c8.y
2525    mad r2.x, r0.z, c8.x, c8.y
2526    mov r2.y, c7.y
2527    mov r1.y, c7.y
2528    texld r2, r2, s1
2529    texld r1, r1, s1
2530    texld r3, t0, s0
2531    lrp r4, r0.y, r2, r1
2532    mul r0, r3.w, r4
2533    mul r0, r0, v0
2534    mov oC0, r0
2535
2536// approximately 42 instruction slots used (3 texture, 39 arithmetic)
2537#endif
2538
2539const DWORD linear13[] =
2540{
2541    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
2542    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
2543    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020007,
2544    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
2545    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
2546    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
2547    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008,
2548    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
2549    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
2550    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
2551    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
2552    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0008,
2553    0x3d800000, 0x3d000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
2554    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
2555    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
2556    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
2557    0xa0000007, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000005,
2558    0x80010000, 0x80000000, 0xa0550007, 0x02000013, 0x80010000, 0x80000000,
2559    0x03000002, 0x80010000, 0x80000000, 0xa0aa0007, 0x02000023, 0x80010000,
2560    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0007, 0xa0000007,
2561    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
2562    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
2563    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
2564    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002,
2565    0x03000005, 0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000,
2566    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003,
2567    0x03000005, 0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000,
2568    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004,
2569    0x03000005, 0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000,
2570    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005,
2571    0x03000002, 0x80010000, 0x80000000, 0xa1000006, 0x03000005, 0x80140000,
2572    0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
2573    0x03000005, 0x80110000, 0x80000000, 0xa0550006, 0x03000002, 0x80010000,
2574    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
2575    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
2576    0xa0000007, 0x04000004, 0x80010001, 0x80000000, 0xa0000008, 0xa0550008,
2577    0x04000004, 0x80010002, 0x80aa0000, 0xa0000008, 0xa0550008, 0x02000001,
2578    0x80020002, 0xa0550007, 0x02000001, 0x80020001, 0xa0550007, 0x03000042,
2579    0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0001, 0x80e40001,
2580    0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000, 0xa0e40800, 0x04000012,
2581    0x800f0004, 0x80550000, 0x80e40002, 0x80e40001, 0x03000005, 0x800f0000,
2582    0x80ff0003, 0x80e40004, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000,
2583    0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
2584};
2585#if 0
2586//
2587// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
2588//
2589//   fxc /T ps_2_0 /Vn linear14 /Fh tmp.h tmp.hlsl
2590//
2591//
2592// Parameters:
2593//
2594//   sampler2D colors;
2595//   float2 fractions[8];
2596//   sampler2D mask;
2597//   float3 params;
2598//
2599//
2600// Registers:
2601//
2602//   Name         Reg   Size
2603//   ------------ ----- ----
2604//   fractions    c0       7
2605//   params       c16      1
2606//   mask         s0       1
2607//   colors       s1       1
2608//
2609
2610    ps_2_0
2611    def c7, 1, 0.0625, 0.03125, 0.5
2612    dcl t0.xy
2613    dcl t1.xy
2614    dcl v0
2615    dcl_2d s0
2616    dcl_2d s1
2617    mov r0.xy, t1
2618    mov r0.z, c7.x
2619    dp3 r0.x, c16, r0
2620    frc r0.x, r0.x
2621    add r0.y, r0.x, -c0.x
2622    mul_sat r0.y, r0.y, c0.y
2623    add r0.z, r0.x, -c1.x
2624    mul_sat r0.z, r0.z, c1.y
2625    add r0.y, r0.y, r0.z
2626    add r0.z, r0.x, -c2.x
2627    mul_sat r0.z, r0.z, c2.y
2628    add r0.y, r0.y, r0.z
2629    add r0.z, r0.x, -c3.x
2630    mul_sat r0.z, r0.z, c3.y
2631    add r0.y, r0.y, r0.z
2632    add r0.z, r0.x, -c4.x
2633    mul_sat r0.z, r0.z, c4.y
2634    add r0.y, r0.y, r0.z
2635    add r0.z, r0.x, -c5.x
2636    add r0.x, r0.x, -c6.x
2637    mul_sat r0.z, r0.z, c5.y
2638    add r0.y, r0.y, r0.z
2639    mul_sat r0.x, r0.x, c6.y
2640    add r0.x, r0.y, r0.x
2641    frc r0.y, r0.x
2642    add r0.x, r0.x, -r0.y
2643    add r0.z, r0.x, c7.x
2644    mad r1.x, r0.x, c7.y, c7.z
2645    mad r2.x, r0.z, c7.y, c7.z
2646    mov r2.y, c7.w
2647    mov r1.y, c7.w
2648    texld r2, r2, s1
2649    texld r1, r1, s1
2650    texld r3, t0, s0
2651    lrp r4, r0.y, r2, r1
2652    mul r0, r3.w, r4
2653    mul r0, r0, v0
2654    mov oC0, r0
2655
2656// approximately 38 instruction slots used (3 texture, 35 arithmetic)
2657#endif
2658
2659const DWORD linear14[] =
2660{
2661    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
2662    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
2663    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020007,
2664    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
2665    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
2666    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
2667    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008,
2668    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
2669    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
2670    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
2671    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
2672    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x0200001f, 0x80000000,
2673    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
2674    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
2675    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
2676    0xa0000007, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x02000013,
2677    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
2678    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
2679    0x80000000, 0xa1000001, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550001,
2680    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
2681    0x80000000, 0xa1000002, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550002,
2682    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
2683    0x80000000, 0xa1000003, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550003,
2684    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
2685    0x80000000, 0xa1000004, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550004,
2686    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
2687    0x80000000, 0xa1000005, 0x03000002, 0x80010000, 0x80000000, 0xa1000006,
2688    0x03000005, 0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000,
2689    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550006,
2690    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
2691    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
2692    0x80040000, 0x80000000, 0xa0000007, 0x04000004, 0x80010001, 0x80000000,
2693    0xa0550007, 0xa0aa0007, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550007,
2694    0xa0aa0007, 0x02000001, 0x80020002, 0xa0ff0007, 0x02000001, 0x80020001,
2695    0xa0ff0007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042,
2696    0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000,
2697    0xa0e40800, 0x04000012, 0x800f0004, 0x80550000, 0x80e40002, 0x80e40001,
2698    0x03000005, 0x800f0000, 0x80ff0003, 0x80e40004, 0x03000005, 0x800f0000,
2699    0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
2700};
2701#if 0
2702//
2703// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
2704//
2705//   fxc /T ps_2_0 /Vn linear16 /Fh tmp.h tmp.hlsl
2706//
2707//
2708// Parameters:
2709//
2710//   sampler2D colors;
2711//   float2 fractions[4];
2712//   float3 params;
2713//
2714//
2715// Registers:
2716//
2717//   Name         Reg   Size
2718//   ------------ ----- ----
2719//   fractions    c0       3
2720//   params       c16      1
2721//   colors       s0       1
2722//
2723
2724    ps_2_0
2725    def c3, 1, 0, 0.5, -1
2726    def c4, 1, 0.5, 0.0625, 0.03125
2727    def c5, 0.416667014, 1.05499995, -0.0549999997, 0
2728    dcl t0.xy
2729    dcl v0
2730    dcl_2d s0
2731    mov r0.z, c3.x
2732    mov r0.xy, t0
2733    dp3 r0.x, c16, r0
2734    add r0.y, r0.x, -c0.x
2735    mul_sat r0.y, r0.y, c0.y
2736    add r0.z, r0.x, -c1.x
2737    mul_sat r0.z, r0.z, c1.y
2738    add r0.y, r0.y, r0.z
2739    add r0.z, r0.x, -c2.x
2740    mul_sat r0.z, r0.z, c2.y
2741    add r0.y, r0.y, r0.z
2742    frc r0.z, r0.y
2743    add r0.y, r0.y, -r0.z
2744    add r0.w, r0.y, c3.x
2745    mad r1.x, r0.w, c4.z, c4.w
2746    add r0.w, r0.x, c3.w
2747    mad r2.x, r0.y, c4.z, c4.w
2748    mov r2.y, c3.z
2749    mov r1.y, c3.z
2750    mov r3.xy, c4
2751    mov r4.xy, c3.yzxw
2752    texld r2, r2, s0
2753    texld r1, r1, s0
2754    texld r3, r3, s0
2755    texld r4, r4, s0
2756    lrp r5, r0.z, r1, r2
2757    cmp r1, r0.w, r3, r5
2758    cmp r0, -r0.x, r4, r1
2759    log r1.x, r0.x
2760    log r1.y, r0.y
2761    log r1.z, r0.z
2762    mul r1.xyz, r1, c5.x
2763    exp r2.x, r1.x
2764    exp r2.y, r1.y
2765    exp r2.z, r1.z
2766    mad r0.xyz, r2, c5.y, c5.z
2767    mul r0, r0, v0
2768    mov oC0, r0
2769
2770// approximately 38 instruction slots used (4 texture, 34 arithmetic)
2771#endif
2772
2773const DWORD linear16[] =
2774{
2775    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
2776    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
2777    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020003,
2778    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
2779    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
2780    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
2781    0x00000004, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
2782    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
2783    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
2784    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
2785    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0004,
2786    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x05000051, 0xa00f0005,
2787    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
2788    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
2789    0xa00f0800, 0x02000001, 0x80040000, 0xa0000003, 0x02000001, 0x80030000,
2790    0xb0e40000, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000002,
2791    0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
2792    0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001, 0x03000005,
2793    0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000,
2794    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002, 0x03000005,
2795    0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000, 0x80550000,
2796    0x80aa0000, 0x02000013, 0x80040000, 0x80550000, 0x03000002, 0x80020000,
2797    0x80550000, 0x81aa0000, 0x03000002, 0x80080000, 0x80550000, 0xa0000003,
2798    0x04000004, 0x80010001, 0x80ff0000, 0xa0aa0004, 0xa0ff0004, 0x03000002,
2799    0x80080000, 0x80000000, 0xa0ff0003, 0x04000004, 0x80010002, 0x80550000,
2800    0xa0aa0004, 0xa0ff0004, 0x02000001, 0x80020002, 0xa0aa0003, 0x02000001,
2801    0x80020001, 0xa0aa0003, 0x02000001, 0x80030003, 0xa0e40004, 0x02000001,
2802    0x80030004, 0xa0c90003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800,
2803    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0003,
2804    0x80e40003, 0xa0e40800, 0x03000042, 0x800f0004, 0x80e40004, 0xa0e40800,
2805    0x04000012, 0x800f0005, 0x80aa0000, 0x80e40001, 0x80e40002, 0x04000058,
2806    0x800f0001, 0x80ff0000, 0x80e40003, 0x80e40005, 0x04000058, 0x800f0000,
2807    0x81000000, 0x80e40004, 0x80e40001, 0x0200000f, 0x80010001, 0x80000000,
2808    0x0200000f, 0x80020001, 0x80550000, 0x0200000f, 0x80040001, 0x80aa0000,
2809    0x03000005, 0x80070001, 0x80e40001, 0xa0000005, 0x0200000e, 0x80010002,
2810    0x80000001, 0x0200000e, 0x80020002, 0x80550001, 0x0200000e, 0x80040002,
2811    0x80aa0001, 0x04000004, 0x80070000, 0x80e40002, 0xa0550005, 0xa0aa0005,
2812    0x03000005, 0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800,
2813    0x80e40000, 0x0000ffff
2814};
2815#if 0
2816//
2817// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
2818//
2819//   fxc /T ps_2_0 /Vn linear17 /Fh tmp.h tmp.hlsl
2820//
2821//
2822// Parameters:
2823//
2824//   sampler2D colors;
2825//   float2 fractions[4];
2826//   float3 params;
2827//
2828//
2829// Registers:
2830//
2831//   Name         Reg   Size
2832//   ------------ ----- ----
2833//   fractions    c0       3
2834//   params       c16      1
2835//   colors       s0       1
2836//
2837
2838    ps_2_0
2839    def c3, 1, 0.5, -0.5, 2
2840    def c4, 0.0625, 0.03125, 0.416667014, 0
2841    def c5, 1.05499995, -0.0549999997, 0, 0
2842    dcl t0.xy
2843    dcl v0
2844    dcl_2d s0
2845    mov r0.xy, t0
2846    mov r0.z, c3.x
2847    dp3 r0.x, c16, r0
2848    mul r0.x, r0.x, c3.y
2849    frc r0.x, r0.x
2850    add r0.x, r0.x, c3.z
2851    abs r0.x, r0.x
2852    mad r0.x, r0.x, -c3.w, c3.x
2853    add r0.y, r0.x, -c0.x
2854    mul_sat r0.y, r0.y, c0.y
2855    add r0.z, r0.x, -c1.x
2856    add r0.x, r0.x, -c2.x
2857    mul_sat r0.z, r0.z, c1.y
2858    add r0.y, r0.y, r0.z
2859    mul_sat r0.x, r0.x, c2.y
2860    add r0.x, r0.y, r0.x
2861    frc r0.y, r0.x
2862    add r0.x, r0.x, -r0.y
2863    add r0.z, r0.x, c3.x
2864    mad r1.x, r0.x, c4.x, c4.y
2865    mad r2.x, r0.z, c4.x, c4.y
2866    mov r2.y, c3.y
2867    mov r1.y, c3.y
2868    texld r2, r2, s0
2869    texld r1, r1, s0
2870    lrp r3, r0.y, r2, r1
2871    log r0.x, r3.x
2872    log r0.y, r3.y
2873    log r0.z, r3.z
2874    mul r0.xyz, r0, c4.z
2875    exp r1.x, r0.x
2876    exp r1.y, r0.y
2877    exp r1.z, r0.z
2878    mad r3.xyz, r1, c5.x, c5.y
2879    mul r0, r3, v0
2880    mov oC0, r0
2881
2882// approximately 36 instruction slots used (2 texture, 34 arithmetic)
2883#endif
2884
2885const DWORD linear17[] =
2886{
2887    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
2888    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
2889    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020003,
2890    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
2891    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
2892    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
2893    0x00000004, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
2894    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
2895    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
2896    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
2897    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0004,
2898    0x3d800000, 0x3d000000, 0x3ed55561, 0x00000000, 0x05000051, 0xa00f0005,
2899    0x3f870a3d, 0xbd6147ae, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
2900    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
2901    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
2902    0xa0000003, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000005,
2903    0x80010000, 0x80000000, 0xa0550003, 0x02000013, 0x80010000, 0x80000000,
2904    0x03000002, 0x80010000, 0x80000000, 0xa0aa0003, 0x02000023, 0x80010000,
2905    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0003, 0xa0000003,
2906    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
2907    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
2908    0x03000002, 0x80010000, 0x80000000, 0xa1000002, 0x03000005, 0x80140000,
2909    0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
2910    0x03000005, 0x80110000, 0x80000000, 0xa0550002, 0x03000002, 0x80010000,
2911    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
2912    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
2913    0xa0000003, 0x04000004, 0x80010001, 0x80000000, 0xa0000004, 0xa0550004,
2914    0x04000004, 0x80010002, 0x80aa0000, 0xa0000004, 0xa0550004, 0x02000001,
2915    0x80020002, 0xa0550003, 0x02000001, 0x80020001, 0xa0550003, 0x03000042,
2916    0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042, 0x800f0001, 0x80e40001,
2917    0xa0e40800, 0x04000012, 0x800f0003, 0x80550000, 0x80e40002, 0x80e40001,
2918    0x0200000f, 0x80010000, 0x80000003, 0x0200000f, 0x80020000, 0x80550003,
2919    0x0200000f, 0x80040000, 0x80aa0003, 0x03000005, 0x80070000, 0x80e40000,
2920    0xa0aa0004, 0x0200000e, 0x80010001, 0x80000000, 0x0200000e, 0x80020001,
2921    0x80550000, 0x0200000e, 0x80040001, 0x80aa0000, 0x04000004, 0x80070003,
2922    0x80e40001, 0xa0000005, 0xa0550005, 0x03000005, 0x800f0000, 0x80e40003,
2923    0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
2924};
2925#if 0
2926//
2927// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
2928//
2929//   fxc /T ps_2_0 /Vn linear18 /Fh tmp.h tmp.hlsl
2930//
2931//
2932// Parameters:
2933//
2934//   sampler2D colors;
2935//   float2 fractions[4];
2936//   float3 params;
2937//
2938//
2939// Registers:
2940//
2941//   Name         Reg   Size
2942//   ------------ ----- ----
2943//   fractions    c0       3
2944//   params       c16      1
2945//   colors       s0       1
2946//
2947
2948    ps_2_0
2949    def c3, 1, 0.0625, 0.03125, 0.5
2950    def c4, 0.416667014, 1.05499995, -0.0549999997, 0
2951    dcl t0.xy
2952    dcl v0
2953    dcl_2d s0
2954    mov r0.xy, t0
2955    mov r0.z, c3.x
2956    dp3 r0.x, c16, r0
2957    frc r0.x, r0.x
2958    add r0.y, r0.x, -c0.x
2959    mul_sat r0.y, r0.y, c0.y
2960    add r0.z, r0.x, -c1.x
2961    add r0.x, r0.x, -c2.x
2962    mul_sat r0.z, r0.z, c1.y
2963    add r0.y, r0.y, r0.z
2964    mul_sat r0.x, r0.x, c2.y
2965    add r0.x, r0.y, r0.x
2966    frc r0.y, r0.x
2967    add r0.x, r0.x, -r0.y
2968    add r0.z, r0.x, c3.x
2969    mad r1.x, r0.x, c3.y, c3.z
2970    mad r2.x, r0.z, c3.y, c3.z
2971    mov r2.y, c3.w
2972    mov r1.y, c3.w
2973    texld r2, r2, s0
2974    texld r1, r1, s0
2975    lrp r3, r0.y, r2, r1
2976    log r0.x, r3.x
2977    log r0.y, r3.y
2978    log r0.z, r3.z
2979    mul r0.xyz, r0, c4.x
2980    exp r1.x, r0.x
2981    exp r1.y, r0.y
2982    exp r1.z, r0.z
2983    mad r3.xyz, r1, c4.y, c4.z
2984    mul r0, r3, v0
2985    mov oC0, r0
2986
2987// approximately 32 instruction slots used (2 texture, 30 arithmetic)
2988#endif
2989
2990const DWORD linear18[] =
2991{
2992    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
2993    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
2994    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020003,
2995    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
2996    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
2997    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
2998    0x00000004, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
2999    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
3000    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
3001    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
3002    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x05000051, 0xa00f0004,
3003    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
3004    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
3005    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
3006    0xa0000003, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x02000013,
3007    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
3008    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
3009    0x80000000, 0xa1000001, 0x03000002, 0x80010000, 0x80000000, 0xa1000002,
3010    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
3011    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550002,
3012    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
3013    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
3014    0x80040000, 0x80000000, 0xa0000003, 0x04000004, 0x80010001, 0x80000000,
3015    0xa0550003, 0xa0aa0003, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550003,
3016    0xa0aa0003, 0x02000001, 0x80020002, 0xa0ff0003, 0x02000001, 0x80020001,
3017    0xa0ff0003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042,
3018    0x800f0001, 0x80e40001, 0xa0e40800, 0x04000012, 0x800f0003, 0x80550000,
3019    0x80e40002, 0x80e40001, 0x0200000f, 0x80010000, 0x80000003, 0x0200000f,
3020    0x80020000, 0x80550003, 0x0200000f, 0x80040000, 0x80aa0003, 0x03000005,
3021    0x80070000, 0x80e40000, 0xa0000004, 0x0200000e, 0x80010001, 0x80000000,
3022    0x0200000e, 0x80020001, 0x80550000, 0x0200000e, 0x80040001, 0x80aa0000,
3023    0x04000004, 0x80070003, 0x80e40001, 0xa0550004, 0xa0aa0004, 0x03000005,
3024    0x800f0000, 0x80e40003, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
3025    0x0000ffff
3026};
3027#if 0
3028//
3029// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
3030//
3031//   fxc /T ps_2_0 /Vn linear20 /Fh tmp.h tmp.hlsl
3032//
3033//
3034// Parameters:
3035//
3036//   sampler2D colors;
3037//   float2 fractions[8];
3038//   float3 params;
3039//
3040//
3041// Registers:
3042//
3043//   Name         Reg   Size
3044//   ------------ ----- ----
3045//   fractions    c0       7
3046//   params       c16      1
3047//   colors       s0       1
3048//
3049
3050    ps_2_0
3051    def c7, 1, 0, 0.5, -1
3052    def c8, 1, 0.5, 0.0625, 0.03125
3053    def c9, 0.416667014, 1.05499995, -0.0549999997, 0
3054    dcl t0.xy
3055    dcl v0
3056    dcl_2d s0
3057    mov r0.z, c7.x
3058    mov r0.xy, t0
3059    dp3 r0.x, c16, r0
3060    add r0.y, r0.x, -c0.x
3061    mul_sat r0.y, r0.y, c0.y
3062    add r0.z, r0.x, -c1.x
3063    mul_sat r0.z, r0.z, c1.y
3064    add r0.y, r0.y, r0.z
3065    add r0.z, r0.x, -c2.x
3066    mul_sat r0.z, r0.z, c2.y
3067    add r0.y, r0.y, r0.z
3068    add r0.z, r0.x, -c3.x
3069    mul_sat r0.z, r0.z, c3.y
3070    add r0.y, r0.y, r0.z
3071    add r0.z, r0.x, -c4.x
3072    mul_sat r0.z, r0.z, c4.y
3073    add r0.y, r0.y, r0.z
3074    add r0.z, r0.x, -c5.x
3075    mul_sat r0.z, r0.z, c5.y
3076    add r0.y, r0.y, r0.z
3077    add r0.z, r0.x, -c6.x
3078    mul_sat r0.z, r0.z, c6.y
3079    add r0.y, r0.y, r0.z
3080    frc r0.z, r0.y
3081    add r0.y, r0.y, -r0.z
3082    add r0.w, r0.y, c7.x
3083    mad r1.x, r0.w, c8.z, c8.w
3084    add r0.w, r0.x, c7.w
3085    mad r2.x, r0.y, c8.z, c8.w
3086    mov r2.y, c7.z
3087    mov r1.y, c7.z
3088    mov r3.xy, c8
3089    mov r4.xy, c7.yzxw
3090    texld r2, r2, s0
3091    texld r1, r1, s0
3092    texld r3, r3, s0
3093    texld r4, r4, s0
3094    lrp r5, r0.z, r1, r2
3095    cmp r1, r0.w, r3, r5
3096    cmp r0, -r0.x, r4, r1
3097    log r1.x, r0.x
3098    log r1.y, r0.y
3099    log r1.z, r0.z
3100    mul r1.xyz, r1, c9.x
3101    exp r2.x, r1.x
3102    exp r2.y, r1.y
3103    exp r2.z, r1.z
3104    mad r0.xyz, r2, c9.y, c9.z
3105    mul r0, r0, v0
3106    mov oC0, r0
3107
3108// approximately 50 instruction slots used (4 texture, 46 arithmetic)
3109#endif
3110
3111const DWORD linear20[] =
3112{
3113    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
3114    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
3115    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020007,
3116    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
3117    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
3118    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
3119    0x00000008, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
3120    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
3121    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
3122    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
3123    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0008,
3124    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x05000051, 0xa00f0009,
3125    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
3126    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
3127    0xa00f0800, 0x02000001, 0x80040000, 0xa0000007, 0x02000001, 0x80030000,
3128    0xb0e40000, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000002,
3129    0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
3130    0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001, 0x03000005,
3131    0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000,
3132    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002, 0x03000005,
3133    0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000, 0x80550000,
3134    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003, 0x03000005,
3135    0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000, 0x80550000,
3136    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004, 0x03000005,
3137    0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000, 0x80550000,
3138    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005, 0x03000005,
3139    0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000,
3140    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000006, 0x03000005,
3141    0x80140000, 0x80aa0000, 0xa0550006, 0x03000002, 0x80020000, 0x80550000,
3142    0x80aa0000, 0x02000013, 0x80040000, 0x80550000, 0x03000002, 0x80020000,
3143    0x80550000, 0x81aa0000, 0x03000002, 0x80080000, 0x80550000, 0xa0000007,
3144    0x04000004, 0x80010001, 0x80ff0000, 0xa0aa0008, 0xa0ff0008, 0x03000002,
3145    0x80080000, 0x80000000, 0xa0ff0007, 0x04000004, 0x80010002, 0x80550000,
3146    0xa0aa0008, 0xa0ff0008, 0x02000001, 0x80020002, 0xa0aa0007, 0x02000001,
3147    0x80020001, 0xa0aa0007, 0x02000001, 0x80030003, 0xa0e40008, 0x02000001,
3148    0x80030004, 0xa0c90007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800,
3149    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0003,
3150    0x80e40003, 0xa0e40800, 0x03000042, 0x800f0004, 0x80e40004, 0xa0e40800,
3151    0x04000012, 0x800f0005, 0x80aa0000, 0x80e40001, 0x80e40002, 0x04000058,
3152    0x800f0001, 0x80ff0000, 0x80e40003, 0x80e40005, 0x04000058, 0x800f0000,
3153    0x81000000, 0x80e40004, 0x80e40001, 0x0200000f, 0x80010001, 0x80000000,
3154    0x0200000f, 0x80020001, 0x80550000, 0x0200000f, 0x80040001, 0x80aa0000,
3155    0x03000005, 0x80070001, 0x80e40001, 0xa0000009, 0x0200000e, 0x80010002,
3156    0x80000001, 0x0200000e, 0x80020002, 0x80550001, 0x0200000e, 0x80040002,
3157    0x80aa0001, 0x04000004, 0x80070000, 0x80e40002, 0xa0550009, 0xa0aa0009,
3158    0x03000005, 0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800,
3159    0x80e40000, 0x0000ffff
3160};
3161#if 0
3162//
3163// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
3164//
3165//   fxc /T ps_2_0 /Vn linear21 /Fh tmp.h tmp.hlsl
3166//
3167//
3168// Parameters:
3169//
3170//   sampler2D colors;
3171//   float2 fractions[8];
3172//   float3 params;
3173//
3174//
3175// Registers:
3176//
3177//   Name         Reg   Size
3178//   ------------ ----- ----
3179//   fractions    c0       7
3180//   params       c16      1
3181//   colors       s0       1
3182//
3183
3184    ps_2_0
3185    def c7, 1, 0.5, -0.5, 2
3186    def c8, 0.0625, 0.03125, 0.416667014, 0
3187    def c9, 1.05499995, -0.0549999997, 0, 0
3188    dcl t0.xy
3189    dcl v0
3190    dcl_2d s0
3191    mov r0.xy, t0
3192    mov r0.z, c7.x
3193    dp3 r0.x, c16, r0
3194    mul r0.x, r0.x, c7.y
3195    frc r0.x, r0.x
3196    add r0.x, r0.x, c7.z
3197    abs r0.x, r0.x
3198    mad r0.x, r0.x, -c7.w, c7.x
3199    add r0.y, r0.x, -c0.x
3200    mul_sat r0.y, r0.y, c0.y
3201    add r0.z, r0.x, -c1.x
3202    mul_sat r0.z, r0.z, c1.y
3203    add r0.y, r0.y, r0.z
3204    add r0.z, r0.x, -c2.x
3205    mul_sat r0.z, r0.z, c2.y
3206    add r0.y, r0.y, r0.z
3207    add r0.z, r0.x, -c3.x
3208    mul_sat r0.z, r0.z, c3.y
3209    add r0.y, r0.y, r0.z
3210    add r0.z, r0.x, -c4.x
3211    mul_sat r0.z, r0.z, c4.y
3212    add r0.y, r0.y, r0.z
3213    add r0.z, r0.x, -c5.x
3214    add r0.x, r0.x, -c6.x
3215    mul_sat r0.z, r0.z, c5.y
3216    add r0.y, r0.y, r0.z
3217    mul_sat r0.x, r0.x, c6.y
3218    add r0.x, r0.y, r0.x
3219    frc r0.y, r0.x
3220    add r0.x, r0.x, -r0.y
3221    add r0.z, r0.x, c7.x
3222    mad r1.x, r0.x, c8.x, c8.y
3223    mad r2.x, r0.z, c8.x, c8.y
3224    mov r2.y, c7.y
3225    mov r1.y, c7.y
3226    texld r2, r2, s0
3227    texld r1, r1, s0
3228    lrp r3, r0.y, r2, r1
3229    log r0.x, r3.x
3230    log r0.y, r3.y
3231    log r0.z, r3.z
3232    mul r0.xyz, r0, c8.z
3233    exp r1.x, r0.x
3234    exp r1.y, r0.y
3235    exp r1.z, r0.z
3236    mad r3.xyz, r1, c9.x, c9.y
3237    mul r0, r3, v0
3238    mov oC0, r0
3239
3240// approximately 48 instruction slots used (2 texture, 46 arithmetic)
3241#endif
3242
3243const DWORD linear21[] =
3244{
3245    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
3246    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
3247    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020007,
3248    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
3249    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
3250    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
3251    0x00000008, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
3252    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
3253    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
3254    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
3255    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0008,
3256    0x3d800000, 0x3d000000, 0x3ed55561, 0x00000000, 0x05000051, 0xa00f0009,
3257    0x3f870a3d, 0xbd6147ae, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
3258    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
3259    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
3260    0xa0000007, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000005,
3261    0x80010000, 0x80000000, 0xa0550007, 0x02000013, 0x80010000, 0x80000000,
3262    0x03000002, 0x80010000, 0x80000000, 0xa0aa0007, 0x02000023, 0x80010000,
3263    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0007, 0xa0000007,
3264    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
3265    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
3266    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
3267    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002,
3268    0x03000005, 0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000,
3269    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003,
3270    0x03000005, 0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000,
3271    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004,
3272    0x03000005, 0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000,
3273    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005,
3274    0x03000002, 0x80010000, 0x80000000, 0xa1000006, 0x03000005, 0x80140000,
3275    0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
3276    0x03000005, 0x80110000, 0x80000000, 0xa0550006, 0x03000002, 0x80010000,
3277    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
3278    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
3279    0xa0000007, 0x04000004, 0x80010001, 0x80000000, 0xa0000008, 0xa0550008,
3280    0x04000004, 0x80010002, 0x80aa0000, 0xa0000008, 0xa0550008, 0x02000001,
3281    0x80020002, 0xa0550007, 0x02000001, 0x80020001, 0xa0550007, 0x03000042,
3282    0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042, 0x800f0001, 0x80e40001,
3283    0xa0e40800, 0x04000012, 0x800f0003, 0x80550000, 0x80e40002, 0x80e40001,
3284    0x0200000f, 0x80010000, 0x80000003, 0x0200000f, 0x80020000, 0x80550003,
3285    0x0200000f, 0x80040000, 0x80aa0003, 0x03000005, 0x80070000, 0x80e40000,
3286    0xa0aa0008, 0x0200000e, 0x80010001, 0x80000000, 0x0200000e, 0x80020001,
3287    0x80550000, 0x0200000e, 0x80040001, 0x80aa0000, 0x04000004, 0x80070003,
3288    0x80e40001, 0xa0000009, 0xa0550009, 0x03000005, 0x800f0000, 0x80e40003,
3289    0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
3290};
3291#if 0
3292//
3293// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
3294//
3295//   fxc /T ps_2_0 /Vn linear22 /Fh tmp.h tmp.hlsl
3296//
3297//
3298// Parameters:
3299//
3300//   sampler2D colors;
3301//   float2 fractions[8];
3302//   float3 params;
3303//
3304//
3305// Registers:
3306//
3307//   Name         Reg   Size
3308//   ------------ ----- ----
3309//   fractions    c0       7
3310//   params       c16      1
3311//   colors       s0       1
3312//
3313
3314    ps_2_0
3315    def c7, 1, 0.0625, 0.03125, 0.5
3316    def c8, 0.416667014, 1.05499995, -0.0549999997, 0
3317    dcl t0.xy
3318    dcl v0
3319    dcl_2d s0
3320    mov r0.xy, t0
3321    mov r0.z, c7.x
3322    dp3 r0.x, c16, r0
3323    frc r0.x, r0.x
3324    add r0.y, r0.x, -c0.x
3325    mul_sat r0.y, r0.y, c0.y
3326    add r0.z, r0.x, -c1.x
3327    mul_sat r0.z, r0.z, c1.y
3328    add r0.y, r0.y, r0.z
3329    add r0.z, r0.x, -c2.x
3330    mul_sat r0.z, r0.z, c2.y
3331    add r0.y, r0.y, r0.z
3332    add r0.z, r0.x, -c3.x
3333    mul_sat r0.z, r0.z, c3.y
3334    add r0.y, r0.y, r0.z
3335    add r0.z, r0.x, -c4.x
3336    mul_sat r0.z, r0.z, c4.y
3337    add r0.y, r0.y, r0.z
3338    add r0.z, r0.x, -c5.x
3339    add r0.x, r0.x, -c6.x
3340    mul_sat r0.z, r0.z, c5.y
3341    add r0.y, r0.y, r0.z
3342    mul_sat r0.x, r0.x, c6.y
3343    add r0.x, r0.y, r0.x
3344    frc r0.y, r0.x
3345    add r0.x, r0.x, -r0.y
3346    add r0.z, r0.x, c7.x
3347    mad r1.x, r0.x, c7.y, c7.z
3348    mad r2.x, r0.z, c7.y, c7.z
3349    mov r2.y, c7.w
3350    mov r1.y, c7.w
3351    texld r2, r2, s0
3352    texld r1, r1, s0
3353    lrp r3, r0.y, r2, r1
3354    log r0.x, r3.x
3355    log r0.y, r3.y
3356    log r0.z, r3.z
3357    mul r0.xyz, r0, c8.x
3358    exp r1.x, r0.x
3359    exp r1.y, r0.y
3360    exp r1.z, r0.z
3361    mad r3.xyz, r1, c8.y, c8.z
3362    mul r0, r3, v0
3363    mov oC0, r0
3364
3365// approximately 44 instruction slots used (2 texture, 42 arithmetic)
3366#endif
3367
3368const DWORD linear22[] =
3369{
3370    0xffff0200, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xffff0200,
3371    0x00000003, 0x0000001c, 0x20000100, 0x000000a4, 0x00000058, 0x00000003,
3372    0x00020001, 0x00000060, 0x00000000, 0x00000070, 0x00000002, 0x00020007,
3373    0x0000007c, 0x00000000, 0x0000008c, 0x00100002, 0x00420001, 0x00000094,
3374    0x00000000, 0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001,
3375    0x00000000, 0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001,
3376    0x00000008, 0x00000000, 0x61726170, 0xab00736d, 0x00030001, 0x00030001,
3377    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
3378    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
3379    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
3380    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x05000051, 0xa00f0008,
3381    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
3382    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
3383    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
3384    0xa0000007, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x02000013,
3385    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
3386    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
3387    0x80000000, 0xa1000001, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550001,
3388    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
3389    0x80000000, 0xa1000002, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550002,
3390    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
3391    0x80000000, 0xa1000003, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550003,
3392    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
3393    0x80000000, 0xa1000004, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550004,
3394    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
3395    0x80000000, 0xa1000005, 0x03000002, 0x80010000, 0x80000000, 0xa1000006,
3396    0x03000005, 0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000,
3397    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550006,
3398    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
3399    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
3400    0x80040000, 0x80000000, 0xa0000007, 0x04000004, 0x80010001, 0x80000000,
3401    0xa0550007, 0xa0aa0007, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550007,
3402    0xa0aa0007, 0x02000001, 0x80020002, 0xa0ff0007, 0x02000001, 0x80020001,
3403    0xa0ff0007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042,
3404    0x800f0001, 0x80e40001, 0xa0e40800, 0x04000012, 0x800f0003, 0x80550000,
3405    0x80e40002, 0x80e40001, 0x0200000f, 0x80010000, 0x80000003, 0x0200000f,
3406    0x80020000, 0x80550003, 0x0200000f, 0x80040000, 0x80aa0003, 0x03000005,
3407    0x80070000, 0x80e40000, 0xa0000008, 0x0200000e, 0x80010001, 0x80000000,
3408    0x0200000e, 0x80020001, 0x80550000, 0x0200000e, 0x80040001, 0x80aa0000,
3409    0x04000004, 0x80070003, 0x80e40001, 0xa0550008, 0xa0aa0008, 0x03000005,
3410    0x800f0000, 0x80e40003, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
3411    0x0000ffff
3412};
3413#if 0
3414//
3415// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
3416//
3417//   fxc /T ps_2_0 /Vn linear24 /Fh tmp.h tmp.hlsl
3418//
3419//
3420// Parameters:
3421//
3422//   sampler2D colors;
3423//   float2 fractions[4];
3424//   sampler2D mask;
3425//   float3 params;
3426//
3427//
3428// Registers:
3429//
3430//   Name         Reg   Size
3431//   ------------ ----- ----
3432//   fractions    c0       3
3433//   params       c16      1
3434//   mask         s0       1
3435//   colors       s1       1
3436//
3437
3438    ps_2_0
3439    def c3, 1, 0, 0.5, -1
3440    def c4, 1, 0.5, 0.0625, 0.03125
3441    def c5, 0.416667014, 1.05499995, -0.0549999997, 0
3442    dcl t0.xy
3443    dcl t1.xy
3444    dcl v0
3445    dcl_2d s0
3446    dcl_2d s1
3447    mov r0.z, c3.x
3448    mov r0.xy, t1
3449    dp3 r0.x, c16, r0
3450    add r0.y, r0.x, -c0.x
3451    mul_sat r0.y, r0.y, c0.y
3452    add r0.z, r0.x, -c1.x
3453    mul_sat r0.z, r0.z, c1.y
3454    add r0.y, r0.y, r0.z
3455    add r0.z, r0.x, -c2.x
3456    mul_sat r0.z, r0.z, c2.y
3457    add r0.y, r0.y, r0.z
3458    frc r0.z, r0.y
3459    add r0.y, r0.y, -r0.z
3460    add r0.w, r0.y, c3.x
3461    mad r1.x, r0.w, c4.z, c4.w
3462    add r0.w, r0.x, c3.w
3463    mad r2.x, r0.y, c4.z, c4.w
3464    mov r2.y, c3.z
3465    mov r1.y, c3.z
3466    mov r3.xy, c4
3467    mov r4.xy, c3.yzxw
3468    texld r2, r2, s1
3469    texld r1, r1, s1
3470    texld r3, r3, s1
3471    texld r4, r4, s1
3472    texld r5, t0, s0
3473    lrp r6, r0.z, r1, r2
3474    cmp r1, r0.w, r3, r6
3475    cmp r0, -r0.x, r4, r1
3476    log r1.x, r0.x
3477    log r1.y, r0.y
3478    log r1.z, r0.z
3479    mul r1.xyz, r1, c5.x
3480    exp r2.x, r1.x
3481    exp r2.y, r1.y
3482    exp r2.z, r1.z
3483    mad r0.xyz, r2, c5.y, c5.z
3484    mul r0, r5.w, r0
3485    mul r0, r0, v0
3486    mov oC0, r0
3487
3488// approximately 40 instruction slots used (5 texture, 35 arithmetic)
3489#endif
3490
3491const DWORD linear24[] =
3492{
3493    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
3494    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
3495    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020003,
3496    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
3497    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
3498    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
3499    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004,
3500    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
3501    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
3502    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
3503    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
3504    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0004,
3505    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x05000051, 0xa00f0005,
3506    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
3507    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
3508    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
3509    0xa00f0801, 0x02000001, 0x80040000, 0xa0000003, 0x02000001, 0x80030000,
3510    0xb0e40001, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000002,
3511    0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
3512    0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001, 0x03000005,
3513    0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000,
3514    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002, 0x03000005,
3515    0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000, 0x80550000,
3516    0x80aa0000, 0x02000013, 0x80040000, 0x80550000, 0x03000002, 0x80020000,
3517    0x80550000, 0x81aa0000, 0x03000002, 0x80080000, 0x80550000, 0xa0000003,
3518    0x04000004, 0x80010001, 0x80ff0000, 0xa0aa0004, 0xa0ff0004, 0x03000002,
3519    0x80080000, 0x80000000, 0xa0ff0003, 0x04000004, 0x80010002, 0x80550000,
3520    0xa0aa0004, 0xa0ff0004, 0x02000001, 0x80020002, 0xa0aa0003, 0x02000001,
3521    0x80020001, 0xa0aa0003, 0x02000001, 0x80030003, 0xa0e40004, 0x02000001,
3522    0x80030004, 0xa0c90003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801,
3523    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003,
3524    0x80e40003, 0xa0e40801, 0x03000042, 0x800f0004, 0x80e40004, 0xa0e40801,
3525    0x03000042, 0x800f0005, 0xb0e40000, 0xa0e40800, 0x04000012, 0x800f0006,
3526    0x80aa0000, 0x80e40001, 0x80e40002, 0x04000058, 0x800f0001, 0x80ff0000,
3527    0x80e40003, 0x80e40006, 0x04000058, 0x800f0000, 0x81000000, 0x80e40004,
3528    0x80e40001, 0x0200000f, 0x80010001, 0x80000000, 0x0200000f, 0x80020001,
3529    0x80550000, 0x0200000f, 0x80040001, 0x80aa0000, 0x03000005, 0x80070001,
3530    0x80e40001, 0xa0000005, 0x0200000e, 0x80010002, 0x80000001, 0x0200000e,
3531    0x80020002, 0x80550001, 0x0200000e, 0x80040002, 0x80aa0001, 0x04000004,
3532    0x80070000, 0x80e40002, 0xa0550005, 0xa0aa0005, 0x03000005, 0x800f0000,
3533    0x80ff0005, 0x80e40000, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000,
3534    0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
3535};
3536#if 0
3537//
3538// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
3539//
3540//   fxc /T ps_2_0 /Vn linear25 /Fh tmp.h tmp.hlsl
3541//
3542//
3543// Parameters:
3544//
3545//   sampler2D colors;
3546//   float2 fractions[4];
3547//   sampler2D mask;
3548//   float3 params;
3549//
3550//
3551// Registers:
3552//
3553//   Name         Reg   Size
3554//   ------------ ----- ----
3555//   fractions    c0       3
3556//   params       c16      1
3557//   mask         s0       1
3558//   colors       s1       1
3559//
3560
3561    ps_2_0
3562    def c3, 1, 0.5, -0.5, 2
3563    def c4, 0.0625, 0.03125, 0.416667014, 0
3564    def c5, 1.05499995, -0.0549999997, 0, 0
3565    dcl t0.xy
3566    dcl t1.xy
3567    dcl v0
3568    dcl_2d s0
3569    dcl_2d s1
3570    mov r0.xy, t1
3571    mov r0.z, c3.x
3572    dp3 r0.x, c16, r0
3573    mul r0.x, r0.x, c3.y
3574    frc r0.x, r0.x
3575    add r0.x, r0.x, c3.z
3576    abs r0.x, r0.x
3577    mad r0.x, r0.x, -c3.w, c3.x
3578    add r0.y, r0.x, -c0.x
3579    mul_sat r0.y, r0.y, c0.y
3580    add r0.z, r0.x, -c1.x
3581    add r0.x, r0.x, -c2.x
3582    mul_sat r0.z, r0.z, c1.y
3583    add r0.y, r0.y, r0.z
3584    mul_sat r0.x, r0.x, c2.y
3585    add r0.x, r0.y, r0.x
3586    frc r0.y, r0.x
3587    add r0.x, r0.x, -r0.y
3588    add r0.z, r0.x, c3.x
3589    mad r1.x, r0.x, c4.x, c4.y
3590    mad r2.x, r0.z, c4.x, c4.y
3591    mov r2.y, c3.y
3592    mov r1.y, c3.y
3593    texld r2, r2, s1
3594    texld r1, r1, s1
3595    texld r3, t0, s0
3596    lrp r4, r0.y, r2, r1
3597    log r0.x, r4.x
3598    log r0.y, r4.y
3599    log r0.z, r4.z
3600    mul r0.xyz, r0, c4.z
3601    exp r1.x, r0.x
3602    exp r1.y, r0.y
3603    exp r1.z, r0.z
3604    mad r4.xyz, r1, c5.x, c5.y
3605    mul r0, r3.w, r4
3606    mul r0, r0, v0
3607    mov oC0, r0
3608
3609// approximately 38 instruction slots used (3 texture, 35 arithmetic)
3610#endif
3611
3612const DWORD linear25[] =
3613{
3614    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
3615    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
3616    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020003,
3617    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
3618    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
3619    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
3620    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004,
3621    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
3622    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
3623    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
3624    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
3625    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0004,
3626    0x3d800000, 0x3d000000, 0x3ed55561, 0x00000000, 0x05000051, 0xa00f0005,
3627    0x3f870a3d, 0xbd6147ae, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
3628    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
3629    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
3630    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
3631    0xa0000003, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000005,
3632    0x80010000, 0x80000000, 0xa0550003, 0x02000013, 0x80010000, 0x80000000,
3633    0x03000002, 0x80010000, 0x80000000, 0xa0aa0003, 0x02000023, 0x80010000,
3634    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0003, 0xa0000003,
3635    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
3636    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
3637    0x03000002, 0x80010000, 0x80000000, 0xa1000002, 0x03000005, 0x80140000,
3638    0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
3639    0x03000005, 0x80110000, 0x80000000, 0xa0550002, 0x03000002, 0x80010000,
3640    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
3641    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
3642    0xa0000003, 0x04000004, 0x80010001, 0x80000000, 0xa0000004, 0xa0550004,
3643    0x04000004, 0x80010002, 0x80aa0000, 0xa0000004, 0xa0550004, 0x02000001,
3644    0x80020002, 0xa0550003, 0x02000001, 0x80020001, 0xa0550003, 0x03000042,
3645    0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0001, 0x80e40001,
3646    0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000, 0xa0e40800, 0x04000012,
3647    0x800f0004, 0x80550000, 0x80e40002, 0x80e40001, 0x0200000f, 0x80010000,
3648    0x80000004, 0x0200000f, 0x80020000, 0x80550004, 0x0200000f, 0x80040000,
3649    0x80aa0004, 0x03000005, 0x80070000, 0x80e40000, 0xa0aa0004, 0x0200000e,
3650    0x80010001, 0x80000000, 0x0200000e, 0x80020001, 0x80550000, 0x0200000e,
3651    0x80040001, 0x80aa0000, 0x04000004, 0x80070004, 0x80e40001, 0xa0000005,
3652    0xa0550005, 0x03000005, 0x800f0000, 0x80ff0003, 0x80e40004, 0x03000005,
3653    0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
3654    0x0000ffff
3655};
3656#if 0
3657//
3658// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
3659//
3660//   fxc /T ps_2_0 /Vn linear26 /Fh tmp.h tmp.hlsl
3661//
3662//
3663// Parameters:
3664//
3665//   sampler2D colors;
3666//   float2 fractions[4];
3667//   sampler2D mask;
3668//   float3 params;
3669//
3670//
3671// Registers:
3672//
3673//   Name         Reg   Size
3674//   ------------ ----- ----
3675//   fractions    c0       3
3676//   params       c16      1
3677//   mask         s0       1
3678//   colors       s1       1
3679//
3680
3681    ps_2_0
3682    def c3, 1, 0.0625, 0.03125, 0.5
3683    def c4, 0.416667014, 1.05499995, -0.0549999997, 0
3684    dcl t0.xy
3685    dcl t1.xy
3686    dcl v0
3687    dcl_2d s0
3688    dcl_2d s1
3689    mov r0.xy, t1
3690    mov r0.z, c3.x
3691    dp3 r0.x, c16, r0
3692    frc r0.x, r0.x
3693    add r0.y, r0.x, -c0.x
3694    mul_sat r0.y, r0.y, c0.y
3695    add r0.z, r0.x, -c1.x
3696    add r0.x, r0.x, -c2.x
3697    mul_sat r0.z, r0.z, c1.y
3698    add r0.y, r0.y, r0.z
3699    mul_sat r0.x, r0.x, c2.y
3700    add r0.x, r0.y, r0.x
3701    frc r0.y, r0.x
3702    add r0.x, r0.x, -r0.y
3703    add r0.z, r0.x, c3.x
3704    mad r1.x, r0.x, c3.y, c3.z
3705    mad r2.x, r0.z, c3.y, c3.z
3706    mov r2.y, c3.w
3707    mov r1.y, c3.w
3708    texld r2, r2, s1
3709    texld r1, r1, s1
3710    texld r3, t0, s0
3711    lrp r4, r0.y, r2, r1
3712    log r0.x, r4.x
3713    log r0.y, r4.y
3714    log r0.z, r4.z
3715    mul r0.xyz, r0, c4.x
3716    exp r1.x, r0.x
3717    exp r1.y, r0.y
3718    exp r1.z, r0.z
3719    mad r4.xyz, r1, c4.y, c4.z
3720    mul r0, r3.w, r4
3721    mul r0, r0, v0
3722    mov oC0, r0
3723
3724// approximately 34 instruction slots used (3 texture, 31 arithmetic)
3725#endif
3726
3727const DWORD linear26[] =
3728{
3729    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
3730    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
3731    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020003,
3732    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
3733    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
3734    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
3735    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004,
3736    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
3737    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
3738    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
3739    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
3740    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x05000051, 0xa00f0004,
3741    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
3742    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
3743    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
3744    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
3745    0xa0000003, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x02000013,
3746    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
3747    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
3748    0x80000000, 0xa1000001, 0x03000002, 0x80010000, 0x80000000, 0xa1000002,
3749    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
3750    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550002,
3751    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
3752    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
3753    0x80040000, 0x80000000, 0xa0000003, 0x04000004, 0x80010001, 0x80000000,
3754    0xa0550003, 0xa0aa0003, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550003,
3755    0xa0aa0003, 0x02000001, 0x80020002, 0xa0ff0003, 0x02000001, 0x80020001,
3756    0xa0ff0003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042,
3757    0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000,
3758    0xa0e40800, 0x04000012, 0x800f0004, 0x80550000, 0x80e40002, 0x80e40001,
3759    0x0200000f, 0x80010000, 0x80000004, 0x0200000f, 0x80020000, 0x80550004,
3760    0x0200000f, 0x80040000, 0x80aa0004, 0x03000005, 0x80070000, 0x80e40000,
3761    0xa0000004, 0x0200000e, 0x80010001, 0x80000000, 0x0200000e, 0x80020001,
3762    0x80550000, 0x0200000e, 0x80040001, 0x80aa0000, 0x04000004, 0x80070004,
3763    0x80e40001, 0xa0550004, 0xa0aa0004, 0x03000005, 0x800f0000, 0x80ff0003,
3764    0x80e40004, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000, 0x02000001,
3765    0x800f0800, 0x80e40000, 0x0000ffff
3766};
3767#if 0
3768//
3769// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
3770//
3771//   fxc /T ps_2_0 /Vn linear28 /Fh tmp.h tmp.hlsl
3772//
3773//
3774// Parameters:
3775//
3776//   sampler2D colors;
3777//   float2 fractions[8];
3778//   sampler2D mask;
3779//   float3 params;
3780//
3781//
3782// Registers:
3783//
3784//   Name         Reg   Size
3785//   ------------ ----- ----
3786//   fractions    c0       7
3787//   params       c16      1
3788//   mask         s0       1
3789//   colors       s1       1
3790//
3791
3792    ps_2_0
3793    def c7, 1, 0, 0.5, -1
3794    def c8, 1, 0.5, 0.0625, 0.03125
3795    def c9, 0.416667014, 1.05499995, -0.0549999997, 0
3796    dcl t0.xy
3797    dcl t1.xy
3798    dcl v0
3799    dcl_2d s0
3800    dcl_2d s1
3801    mov r0.z, c7.x
3802    mov r0.xy, t1
3803    dp3 r0.x, c16, r0
3804    add r0.y, r0.x, -c0.x
3805    mul_sat r0.y, r0.y, c0.y
3806    add r0.z, r0.x, -c1.x
3807    mul_sat r0.z, r0.z, c1.y
3808    add r0.y, r0.y, r0.z
3809    add r0.z, r0.x, -c2.x
3810    mul_sat r0.z, r0.z, c2.y
3811    add r0.y, r0.y, r0.z
3812    add r0.z, r0.x, -c3.x
3813    mul_sat r0.z, r0.z, c3.y
3814    add r0.y, r0.y, r0.z
3815    add r0.z, r0.x, -c4.x
3816    mul_sat r0.z, r0.z, c4.y
3817    add r0.y, r0.y, r0.z
3818    add r0.z, r0.x, -c5.x
3819    mul_sat r0.z, r0.z, c5.y
3820    add r0.y, r0.y, r0.z
3821    add r0.z, r0.x, -c6.x
3822    mul_sat r0.z, r0.z, c6.y
3823    add r0.y, r0.y, r0.z
3824    frc r0.z, r0.y
3825    add r0.y, r0.y, -r0.z
3826    add r0.w, r0.y, c7.x
3827    mad r1.x, r0.w, c8.z, c8.w
3828    add r0.w, r0.x, c7.w
3829    mad r2.x, r0.y, c8.z, c8.w
3830    mov r2.y, c7.z
3831    mov r1.y, c7.z
3832    mov r3.xy, c8
3833    mov r4.xy, c7.yzxw
3834    texld r2, r2, s1
3835    texld r1, r1, s1
3836    texld r3, r3, s1
3837    texld r4, r4, s1
3838    texld r5, t0, s0
3839    lrp r6, r0.z, r1, r2
3840    cmp r1, r0.w, r3, r6
3841    cmp r0, -r0.x, r4, r1
3842    log r1.x, r0.x
3843    log r1.y, r0.y
3844    log r1.z, r0.z
3845    mul r1.xyz, r1, c9.x
3846    exp r2.x, r1.x
3847    exp r2.y, r1.y
3848    exp r2.z, r1.z
3849    mad r0.xyz, r2, c9.y, c9.z
3850    mul r0, r5.w, r0
3851    mul r0, r0, v0
3852    mov oC0, r0
3853
3854// approximately 52 instruction slots used (5 texture, 47 arithmetic)
3855#endif
3856
3857const DWORD linear28[] =
3858{
3859    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
3860    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
3861    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020007,
3862    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
3863    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
3864    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
3865    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008,
3866    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
3867    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
3868    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
3869    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
3870    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0008,
3871    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x05000051, 0xa00f0009,
3872    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
3873    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
3874    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
3875    0xa00f0801, 0x02000001, 0x80040000, 0xa0000007, 0x02000001, 0x80030000,
3876    0xb0e40001, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000002,
3877    0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
3878    0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001, 0x03000005,
3879    0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000,
3880    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002, 0x03000005,
3881    0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000, 0x80550000,
3882    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003, 0x03000005,
3883    0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000, 0x80550000,
3884    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004, 0x03000005,
3885    0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000, 0x80550000,
3886    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005, 0x03000005,
3887    0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000,
3888    0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000006, 0x03000005,
3889    0x80140000, 0x80aa0000, 0xa0550006, 0x03000002, 0x80020000, 0x80550000,
3890    0x80aa0000, 0x02000013, 0x80040000, 0x80550000, 0x03000002, 0x80020000,
3891    0x80550000, 0x81aa0000, 0x03000002, 0x80080000, 0x80550000, 0xa0000007,
3892    0x04000004, 0x80010001, 0x80ff0000, 0xa0aa0008, 0xa0ff0008, 0x03000002,
3893    0x80080000, 0x80000000, 0xa0ff0007, 0x04000004, 0x80010002, 0x80550000,
3894    0xa0aa0008, 0xa0ff0008, 0x02000001, 0x80020002, 0xa0aa0007, 0x02000001,
3895    0x80020001, 0xa0aa0007, 0x02000001, 0x80030003, 0xa0e40008, 0x02000001,
3896    0x80030004, 0xa0c90007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801,
3897    0x03000042, 0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003,
3898    0x80e40003, 0xa0e40801, 0x03000042, 0x800f0004, 0x80e40004, 0xa0e40801,
3899    0x03000042, 0x800f0005, 0xb0e40000, 0xa0e40800, 0x04000012, 0x800f0006,
3900    0x80aa0000, 0x80e40001, 0x80e40002, 0x04000058, 0x800f0001, 0x80ff0000,
3901    0x80e40003, 0x80e40006, 0x04000058, 0x800f0000, 0x81000000, 0x80e40004,
3902    0x80e40001, 0x0200000f, 0x80010001, 0x80000000, 0x0200000f, 0x80020001,
3903    0x80550000, 0x0200000f, 0x80040001, 0x80aa0000, 0x03000005, 0x80070001,
3904    0x80e40001, 0xa0000009, 0x0200000e, 0x80010002, 0x80000001, 0x0200000e,
3905    0x80020002, 0x80550001, 0x0200000e, 0x80040002, 0x80aa0001, 0x04000004,
3906    0x80070000, 0x80e40002, 0xa0550009, 0xa0aa0009, 0x03000005, 0x800f0000,
3907    0x80ff0005, 0x80e40000, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000,
3908    0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
3909};
3910#if 0
3911//
3912// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
3913//
3914//   fxc /T ps_2_0 /Vn linear29 /Fh tmp.h tmp.hlsl
3915//
3916//
3917// Parameters:
3918//
3919//   sampler2D colors;
3920//   float2 fractions[8];
3921//   sampler2D mask;
3922//   float3 params;
3923//
3924//
3925// Registers:
3926//
3927//   Name         Reg   Size
3928//   ------------ ----- ----
3929//   fractions    c0       7
3930//   params       c16      1
3931//   mask         s0       1
3932//   colors       s1       1
3933//
3934
3935    ps_2_0
3936    def c7, 1, 0.5, -0.5, 2
3937    def c8, 0.0625, 0.03125, 0.416667014, 0
3938    def c9, 1.05499995, -0.0549999997, 0, 0
3939    dcl t0.xy
3940    dcl t1.xy
3941    dcl v0
3942    dcl_2d s0
3943    dcl_2d s1
3944    mov r0.xy, t1
3945    mov r0.z, c7.x
3946    dp3 r0.x, c16, r0
3947    mul r0.x, r0.x, c7.y
3948    frc r0.x, r0.x
3949    add r0.x, r0.x, c7.z
3950    abs r0.x, r0.x
3951    mad r0.x, r0.x, -c7.w, c7.x
3952    add r0.y, r0.x, -c0.x
3953    mul_sat r0.y, r0.y, c0.y
3954    add r0.z, r0.x, -c1.x
3955    mul_sat r0.z, r0.z, c1.y
3956    add r0.y, r0.y, r0.z
3957    add r0.z, r0.x, -c2.x
3958    mul_sat r0.z, r0.z, c2.y
3959    add r0.y, r0.y, r0.z
3960    add r0.z, r0.x, -c3.x
3961    mul_sat r0.z, r0.z, c3.y
3962    add r0.y, r0.y, r0.z
3963    add r0.z, r0.x, -c4.x
3964    mul_sat r0.z, r0.z, c4.y
3965    add r0.y, r0.y, r0.z
3966    add r0.z, r0.x, -c5.x
3967    add r0.x, r0.x, -c6.x
3968    mul_sat r0.z, r0.z, c5.y
3969    add r0.y, r0.y, r0.z
3970    mul_sat r0.x, r0.x, c6.y
3971    add r0.x, r0.y, r0.x
3972    frc r0.y, r0.x
3973    add r0.x, r0.x, -r0.y
3974    add r0.z, r0.x, c7.x
3975    mad r1.x, r0.x, c8.x, c8.y
3976    mad r2.x, r0.z, c8.x, c8.y
3977    mov r2.y, c7.y
3978    mov r1.y, c7.y
3979    texld r2, r2, s1
3980    texld r1, r1, s1
3981    texld r3, t0, s0
3982    lrp r4, r0.y, r2, r1
3983    log r0.x, r4.x
3984    log r0.y, r4.y
3985    log r0.z, r4.z
3986    mul r0.xyz, r0, c8.z
3987    exp r1.x, r0.x
3988    exp r1.y, r0.y
3989    exp r1.z, r0.z
3990    mad r4.xyz, r1, c9.x, c9.y
3991    mul r0, r3.w, r4
3992    mul r0, r0, v0
3993    mov oC0, r0
3994
3995// approximately 50 instruction slots used (3 texture, 47 arithmetic)
3996#endif
3997
3998const DWORD linear29[] =
3999{
4000    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
4001    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
4002    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020007,
4003    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
4004    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
4005    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
4006    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008,
4007    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
4008    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
4009    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
4010    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
4011    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0008,
4012    0x3d800000, 0x3d000000, 0x3ed55561, 0x00000000, 0x05000051, 0xa00f0009,
4013    0x3f870a3d, 0xbd6147ae, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
4014    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
4015    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
4016    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
4017    0xa0000007, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x03000005,
4018    0x80010000, 0x80000000, 0xa0550007, 0x02000013, 0x80010000, 0x80000000,
4019    0x03000002, 0x80010000, 0x80000000, 0xa0aa0007, 0x02000023, 0x80010000,
4020    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0007, 0xa0000007,
4021    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
4022    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
4023    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
4024    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002,
4025    0x03000005, 0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000,
4026    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003,
4027    0x03000005, 0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000,
4028    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004,
4029    0x03000005, 0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000,
4030    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005,
4031    0x03000002, 0x80010000, 0x80000000, 0xa1000006, 0x03000005, 0x80140000,
4032    0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
4033    0x03000005, 0x80110000, 0x80000000, 0xa0550006, 0x03000002, 0x80010000,
4034    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
4035    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
4036    0xa0000007, 0x04000004, 0x80010001, 0x80000000, 0xa0000008, 0xa0550008,
4037    0x04000004, 0x80010002, 0x80aa0000, 0xa0000008, 0xa0550008, 0x02000001,
4038    0x80020002, 0xa0550007, 0x02000001, 0x80020001, 0xa0550007, 0x03000042,
4039    0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0001, 0x80e40001,
4040    0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000, 0xa0e40800, 0x04000012,
4041    0x800f0004, 0x80550000, 0x80e40002, 0x80e40001, 0x0200000f, 0x80010000,
4042    0x80000004, 0x0200000f, 0x80020000, 0x80550004, 0x0200000f, 0x80040000,
4043    0x80aa0004, 0x03000005, 0x80070000, 0x80e40000, 0xa0aa0008, 0x0200000e,
4044    0x80010001, 0x80000000, 0x0200000e, 0x80020001, 0x80550000, 0x0200000e,
4045    0x80040001, 0x80aa0000, 0x04000004, 0x80070004, 0x80e40001, 0xa0000009,
4046    0xa0550009, 0x03000005, 0x800f0000, 0x80ff0003, 0x80e40004, 0x03000005,
4047    0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
4048    0x0000ffff
4049};
4050#if 0
4051//
4052// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
4053//
4054//   fxc /T ps_2_0 /Vn linear30 /Fh tmp.h tmp.hlsl
4055//
4056//
4057// Parameters:
4058//
4059//   sampler2D colors;
4060//   float2 fractions[8];
4061//   sampler2D mask;
4062//   float3 params;
4063//
4064//
4065// Registers:
4066//
4067//   Name         Reg   Size
4068//   ------------ ----- ----
4069//   fractions    c0       7
4070//   params       c16      1
4071//   mask         s0       1
4072//   colors       s1       1
4073//
4074
4075    ps_2_0
4076    def c7, 1, 0.0625, 0.03125, 0.5
4077    def c8, 0.416667014, 1.05499995, -0.0549999997, 0
4078    dcl t0.xy
4079    dcl t1.xy
4080    dcl v0
4081    dcl_2d s0
4082    dcl_2d s1
4083    mov r0.xy, t1
4084    mov r0.z, c7.x
4085    dp3 r0.x, c16, r0
4086    frc r0.x, r0.x
4087    add r0.y, r0.x, -c0.x
4088    mul_sat r0.y, r0.y, c0.y
4089    add r0.z, r0.x, -c1.x
4090    mul_sat r0.z, r0.z, c1.y
4091    add r0.y, r0.y, r0.z
4092    add r0.z, r0.x, -c2.x
4093    mul_sat r0.z, r0.z, c2.y
4094    add r0.y, r0.y, r0.z
4095    add r0.z, r0.x, -c3.x
4096    mul_sat r0.z, r0.z, c3.y
4097    add r0.y, r0.y, r0.z
4098    add r0.z, r0.x, -c4.x
4099    mul_sat r0.z, r0.z, c4.y
4100    add r0.y, r0.y, r0.z
4101    add r0.z, r0.x, -c5.x
4102    add r0.x, r0.x, -c6.x
4103    mul_sat r0.z, r0.z, c5.y
4104    add r0.y, r0.y, r0.z
4105    mul_sat r0.x, r0.x, c6.y
4106    add r0.x, r0.y, r0.x
4107    frc r0.y, r0.x
4108    add r0.x, r0.x, -r0.y
4109    add r0.z, r0.x, c7.x
4110    mad r1.x, r0.x, c7.y, c7.z
4111    mad r2.x, r0.z, c7.y, c7.z
4112    mov r2.y, c7.w
4113    mov r1.y, c7.w
4114    texld r2, r2, s1
4115    texld r1, r1, s1
4116    texld r3, t0, s0
4117    lrp r4, r0.y, r2, r1
4118    log r0.x, r4.x
4119    log r0.y, r4.y
4120    log r0.z, r4.z
4121    mul r0.xyz, r0, c8.x
4122    exp r1.x, r0.x
4123    exp r1.y, r0.y
4124    exp r1.z, r0.z
4125    mad r4.xyz, r1, c8.y, c8.z
4126    mul r0, r3.w, r4
4127    mul r0, r0, v0
4128    mov oC0, r0
4129
4130// approximately 46 instruction slots used (3 texture, 43 arithmetic)
4131#endif
4132
4133const DWORD linear30[] =
4134{
4135    0xffff0200, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xffff0200,
4136    0x00000004, 0x0000001c, 0x20000100, 0x000000bc, 0x0000006c, 0x00010003,
4137    0x00060001, 0x00000074, 0x00000000, 0x00000084, 0x00000002, 0x00020007,
4138    0x00000090, 0x00000000, 0x000000a0, 0x00000003, 0x00020001, 0x00000074,
4139    0x00000000, 0x000000a5, 0x00100002, 0x00420001, 0x000000ac, 0x00000000,
4140    0x6f6c6f63, 0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000,
4141    0x63617266, 0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008,
4142    0x00000000, 0x6b73616d, 0x72617000, 0x00736d61, 0x00030001, 0x00030001,
4143    0x00000001, 0x00000000, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
4144    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
4145    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
4146    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x05000051, 0xa00f0008,
4147    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
4148    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
4149    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
4150    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
4151    0xa0000007, 0x03000008, 0x80010000, 0xa0e40010, 0x80e40000, 0x02000013,
4152    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
4153    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
4154    0x80000000, 0xa1000001, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550001,
4155    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
4156    0x80000000, 0xa1000002, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550002,
4157    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
4158    0x80000000, 0xa1000003, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550003,
4159    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
4160    0x80000000, 0xa1000004, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550004,
4161    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
4162    0x80000000, 0xa1000005, 0x03000002, 0x80010000, 0x80000000, 0xa1000006,
4163    0x03000005, 0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000,
4164    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550006,
4165    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
4166    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
4167    0x80040000, 0x80000000, 0xa0000007, 0x04000004, 0x80010001, 0x80000000,
4168    0xa0550007, 0xa0aa0007, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550007,
4169    0xa0aa0007, 0x02000001, 0x80020002, 0xa0ff0007, 0x02000001, 0x80020001,
4170    0xa0ff0007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042,
4171    0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000,
4172    0xa0e40800, 0x04000012, 0x800f0004, 0x80550000, 0x80e40002, 0x80e40001,
4173    0x0200000f, 0x80010000, 0x80000004, 0x0200000f, 0x80020000, 0x80550004,
4174    0x0200000f, 0x80040000, 0x80aa0004, 0x03000005, 0x80070000, 0x80e40000,
4175    0xa0000008, 0x0200000e, 0x80010001, 0x80000000, 0x0200000e, 0x80020001,
4176    0x80550000, 0x0200000e, 0x80040001, 0x80aa0000, 0x04000004, 0x80070004,
4177    0x80e40001, 0xa0550008, 0xa0aa0008, 0x03000005, 0x800f0000, 0x80ff0003,
4178    0x80e40004, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000, 0x02000001,
4179    0x800f0800, 0x80e40000, 0x0000ffff
4180};
4181const DWORD *linearShaders[] =
4182{
4183    linear0,
4184    linear1,
4185    linear2,
4186    NULL,
4187    linear4,
4188    linear5,
4189    linear6,
4190    NULL,
4191    linear8,
4192    linear9,
4193    linear10,
4194    NULL,
4195    linear12,
4196    linear13,
4197    linear14,
4198    NULL,
4199    linear16,
4200    linear17,
4201    linear18,
4202    NULL,
4203    linear20,
4204    linear21,
4205    linear22,
4206    NULL,
4207    linear24,
4208    linear25,
4209    linear26,
4210    NULL,
4211    linear28,
4212    linear29,
4213    linear30,
4214    NULL,
4215};
4216
4217#if 0
4218//
4219// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
4220//
4221//   fxc /T ps_2_0 /Vn radial0 /Fh tmp.h tmp.hlsl
4222//
4223//
4224// Parameters:
4225//
4226//   sampler2D colors;
4227//   float2 fractions[4];
4228//   float3 m0;
4229//   float3 m1;
4230//   float3 precalc;
4231//
4232//
4233// Registers:
4234//
4235//   Name         Reg   Size
4236//   ------------ ----- ----
4237//   fractions    c0       3
4238//   m0           c16      1
4239//   m1           c17      1
4240//   precalc      c18      1
4241//   colors       s0       1
4242//
4243
4244    ps_2_0
4245    def c3, 1, 0, 0.5, -1
4246    def c4, 1, 0.5, 0.0625, 0.03125
4247    dcl t0.xy
4248    dcl v0
4249    dcl_2d s0
4250    mov r0.z, c3.x
4251    mov r0.xy, t0
4252    dp3 r0.w, r0, c17
4253    mul r0.w, r0.w, r0.w
4254    mul r0.w, r0.w, c18.y
4255    dp3 r0.x, r0, c16
4256    add r0.x, r0.x, -c18.x
4257    mad r0.y, r0.x, r0.x, r0.w
4258    rsq r0.y, r0.y
4259    rcp r0.y, r0.y
4260    mad r0.x, c18.x, r0.x, r0.y
4261    mov r0.z, c18.z
4262    mad r0.y, r0.x, r0.z, -c0.x
4263    mul_sat r0.y, r0.y, c0.y
4264    mad r0.w, r0.x, r0.z, -c1.x
4265    mul_sat r0.w, r0.w, c1.y
4266    add r0.y, r0.y, r0.w
4267    mad r0.w, r0.x, r0.z, -c2.x
4268    mul_sat r0.w, r0.w, c2.y
4269    add r0.y, r0.y, r0.w
4270    frc r0.w, r0.y
4271    add r0.y, r0.y, -r0.w
4272    add r1.w, r0.y, c3.x
4273    mad r1.x, r1.w, c4.z, c4.w
4274    mul r1.z, r0.x, c18.z
4275    mad r1.w, r0.x, r0.z, c3.w
4276    mad r0.x, r0.y, c4.z, c4.w
4277    mov r0.y, c3.z
4278    mov r1.y, c3.z
4279    mov r2.xy, c4
4280    mov r3.xy, c3.yzxw
4281    texld r4, r0, s0
4282    texld r5, r1, s0
4283    texld r2, r2, s0
4284    texld r3, r3, s0
4285    lrp r6, r0.w, r5, r4
4286    cmp r0, r1.w, r2, r6
4287    cmp r0, -r1.z, r3, r0
4288    mul r0, r0, v0
4289    mov oC0, r0
4290
4291// approximately 40 instruction slots used (4 texture, 36 arithmetic)
4292#endif
4293
4294const DWORD radial0[] =
4295{
4296    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
4297    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
4298    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020003,
4299    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
4300    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
4301    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
4302    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
4303    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000,
4304    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
4305    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
4306    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
4307    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0003,
4308    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0004,
4309    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x0200001f, 0x80000000,
4310    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
4311    0xa00f0800, 0x02000001, 0x80040000, 0xa0000003, 0x02000001, 0x80030000,
4312    0xb0e40000, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000005,
4313    0x80080000, 0x80ff0000, 0x80ff0000, 0x03000005, 0x80080000, 0x80ff0000,
4314    0xa0550012, 0x03000008, 0x80010000, 0x80e40000, 0xa0e40010, 0x03000002,
4315    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
4316    0x80000000, 0x80ff0000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
4317    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
4318    0x80550000, 0x02000001, 0x80040000, 0xa0aa0012, 0x04000004, 0x80020000,
4319    0x80000000, 0x80aa0000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
4320    0xa0550000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000001,
4321    0x03000005, 0x80180000, 0x80ff0000, 0xa0550001, 0x03000002, 0x80020000,
4322    0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000,
4323    0xa1000002, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550002, 0x03000002,
4324    0x80020000, 0x80550000, 0x80ff0000, 0x02000013, 0x80080000, 0x80550000,
4325    0x03000002, 0x80020000, 0x80550000, 0x81ff0000, 0x03000002, 0x80080001,
4326    0x80550000, 0xa0000003, 0x04000004, 0x80010001, 0x80ff0001, 0xa0aa0004,
4327    0xa0ff0004, 0x03000005, 0x80040001, 0x80000000, 0xa0aa0012, 0x04000004,
4328    0x80080001, 0x80000000, 0x80aa0000, 0xa0ff0003, 0x04000004, 0x80010000,
4329    0x80550000, 0xa0aa0004, 0xa0ff0004, 0x02000001, 0x80020000, 0xa0aa0003,
4330    0x02000001, 0x80020001, 0xa0aa0003, 0x02000001, 0x80030002, 0xa0e40004,
4331    0x02000001, 0x80030003, 0xa0c90003, 0x03000042, 0x800f0004, 0x80e40000,
4332    0xa0e40800, 0x03000042, 0x800f0005, 0x80e40001, 0xa0e40800, 0x03000042,
4333    0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042, 0x800f0003, 0x80e40003,
4334    0xa0e40800, 0x04000012, 0x800f0006, 0x80ff0000, 0x80e40005, 0x80e40004,
4335    0x04000058, 0x800f0000, 0x80ff0001, 0x80e40002, 0x80e40006, 0x04000058,
4336    0x800f0000, 0x81aa0001, 0x80e40003, 0x80e40000, 0x03000005, 0x800f0000,
4337    0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
4338};
4339#if 0
4340//
4341// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
4342//
4343//   fxc /T ps_2_0 /Vn radial1 /Fh tmp.h tmp.hlsl
4344//
4345//
4346// Parameters:
4347//
4348//   sampler2D colors;
4349//   float2 fractions[4];
4350//   float3 m0;
4351//   float3 m1;
4352//   float3 precalc;
4353//
4354//
4355// Registers:
4356//
4357//   Name         Reg   Size
4358//   ------------ ----- ----
4359//   fractions    c0       3
4360//   m0           c16      1
4361//   m1           c17      1
4362//   precalc      c18      1
4363//   colors       s0       1
4364//
4365
4366    ps_2_0
4367    def c3, 1, 0.5, -0.5, 2
4368    def c4, 0.0625, 0.03125, 0, 0
4369    dcl t0.xy
4370    dcl v0
4371    dcl_2d s0
4372    mov r0.xy, t0
4373    mov r0.z, c3.x
4374    dp3 r0.w, r0, c17
4375    dp3 r0.x, r0, c16
4376    mul r0.y, r0.w, r0.w
4377    mul r0.y, r0.y, c18.y
4378    add r0.x, r0.x, -c18.x
4379    mad r0.y, r0.x, r0.x, r0.y
4380    rsq r0.y, r0.y
4381    rcp r0.y, r0.y
4382    mad r0.x, c18.x, r0.x, r0.y
4383    mul r0.x, r0.x, c18.z
4384    mul r0.x, r0.x, c3.y
4385    frc r0.x, r0.x
4386    add r0.x, r0.x, c3.z
4387    abs r0.x, r0.x
4388    mad r0.x, r0.x, -c3.w, c3.x
4389    add r0.y, r0.x, -c0.x
4390    mul_sat r0.y, r0.y, c0.y
4391    add r0.z, r0.x, -c1.x
4392    add r0.x, r0.x, -c2.x
4393    mul_sat r0.z, r0.z, c1.y
4394    add r0.y, r0.y, r0.z
4395    mul_sat r0.x, r0.x, c2.y
4396    add r0.x, r0.y, r0.x
4397    frc r0.y, r0.x
4398    add r0.x, r0.x, -r0.y
4399    add r0.z, r0.x, c3.x
4400    mad r1.x, r0.x, c4.x, c4.y
4401    mad r2.x, r0.z, c4.x, c4.y
4402    mov r2.y, c3.y
4403    mov r1.y, c3.y
4404    texld r2, r2, s0
4405    texld r1, r1, s0
4406    lrp r3, r0.y, r2, r1
4407    mul r0, r3, v0
4408    mov oC0, r0
4409
4410// approximately 37 instruction slots used (2 texture, 35 arithmetic)
4411#endif
4412
4413const DWORD radial1[] =
4414{
4415    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
4416    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
4417    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020003,
4418    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
4419    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
4420    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
4421    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
4422    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000,
4423    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
4424    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
4425    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
4426    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0003,
4427    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0004,
4428    0x3d800000, 0x3d000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
4429    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
4430    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
4431    0xa0000003, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
4432    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
4433    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
4434    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
4435    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
4436    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
4437    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x03000005,
4438    0x80010000, 0x80000000, 0xa0550003, 0x02000013, 0x80010000, 0x80000000,
4439    0x03000002, 0x80010000, 0x80000000, 0xa0aa0003, 0x02000023, 0x80010000,
4440    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0003, 0xa0000003,
4441    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
4442    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
4443    0x03000002, 0x80010000, 0x80000000, 0xa1000002, 0x03000005, 0x80140000,
4444    0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
4445    0x03000005, 0x80110000, 0x80000000, 0xa0550002, 0x03000002, 0x80010000,
4446    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
4447    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
4448    0xa0000003, 0x04000004, 0x80010001, 0x80000000, 0xa0000004, 0xa0550004,
4449    0x04000004, 0x80010002, 0x80aa0000, 0xa0000004, 0xa0550004, 0x02000001,
4450    0x80020002, 0xa0550003, 0x02000001, 0x80020001, 0xa0550003, 0x03000042,
4451    0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042, 0x800f0001, 0x80e40001,
4452    0xa0e40800, 0x04000012, 0x800f0003, 0x80550000, 0x80e40002, 0x80e40001,
4453    0x03000005, 0x800f0000, 0x80e40003, 0x90e40000, 0x02000001, 0x800f0800,
4454    0x80e40000, 0x0000ffff
4455};
4456#if 0
4457//
4458// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
4459//
4460//   fxc /T ps_2_0 /Vn radial2 /Fh tmp.h tmp.hlsl
4461//
4462//
4463// Parameters:
4464//
4465//   sampler2D colors;
4466//   float2 fractions[4];
4467//   float3 m0;
4468//   float3 m1;
4469//   float3 precalc;
4470//
4471//
4472// Registers:
4473//
4474//   Name         Reg   Size
4475//   ------------ ----- ----
4476//   fractions    c0       3
4477//   m0           c16      1
4478//   m1           c17      1
4479//   precalc      c18      1
4480//   colors       s0       1
4481//
4482
4483    ps_2_0
4484    def c3, 1, 0.0625, 0.03125, 0.5
4485    dcl t0.xy
4486    dcl v0
4487    dcl_2d s0
4488    mov r0.xy, t0
4489    mov r0.z, c3.x
4490    dp3 r0.w, r0, c17
4491    dp3 r0.x, r0, c16
4492    mul r0.y, r0.w, r0.w
4493    mul r0.y, r0.y, c18.y
4494    add r0.x, r0.x, -c18.x
4495    mad r0.y, r0.x, r0.x, r0.y
4496    rsq r0.y, r0.y
4497    rcp r0.y, r0.y
4498    mad r0.x, c18.x, r0.x, r0.y
4499    mul r0.x, r0.x, c18.z
4500    frc r0.x, r0.x
4501    add r0.y, r0.x, -c0.x
4502    mul_sat r0.y, r0.y, c0.y
4503    add r0.z, r0.x, -c1.x
4504    add r0.x, r0.x, -c2.x
4505    mul_sat r0.z, r0.z, c1.y
4506    add r0.y, r0.y, r0.z
4507    mul_sat r0.x, r0.x, c2.y
4508    add r0.x, r0.y, r0.x
4509    frc r0.y, r0.x
4510    add r0.x, r0.x, -r0.y
4511    add r0.z, r0.x, c3.x
4512    mad r1.x, r0.x, c3.y, c3.z
4513    mad r2.x, r0.z, c3.y, c3.z
4514    mov r2.y, c3.w
4515    mov r1.y, c3.w
4516    texld r2, r2, s0
4517    texld r1, r1, s0
4518    lrp r3, r0.y, r2, r1
4519    mul r0, r3, v0
4520    mov oC0, r0
4521
4522// approximately 33 instruction slots used (2 texture, 31 arithmetic)
4523#endif
4524
4525const DWORD radial2[] =
4526{
4527    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
4528    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
4529    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020003,
4530    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
4531    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
4532    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
4533    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
4534    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000,
4535    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
4536    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
4537    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
4538    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0003,
4539    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x0200001f, 0x80000000,
4540    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
4541    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
4542    0xa0000003, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
4543    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
4544    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
4545    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
4546    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
4547    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
4548    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x02000013,
4549    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
4550    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
4551    0x80000000, 0xa1000001, 0x03000002, 0x80010000, 0x80000000, 0xa1000002,
4552    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
4553    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550002,
4554    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
4555    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
4556    0x80040000, 0x80000000, 0xa0000003, 0x04000004, 0x80010001, 0x80000000,
4557    0xa0550003, 0xa0aa0003, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550003,
4558    0xa0aa0003, 0x02000001, 0x80020002, 0xa0ff0003, 0x02000001, 0x80020001,
4559    0xa0ff0003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042,
4560    0x800f0001, 0x80e40001, 0xa0e40800, 0x04000012, 0x800f0003, 0x80550000,
4561    0x80e40002, 0x80e40001, 0x03000005, 0x800f0000, 0x80e40003, 0x90e40000,
4562    0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
4563};
4564#if 0
4565//
4566// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
4567//
4568//   fxc /T ps_2_0 /Vn radial4 /Fh tmp.h tmp.hlsl
4569//
4570//
4571// Parameters:
4572//
4573//   sampler2D colors;
4574//   float2 fractions[8];
4575//   float3 m0;
4576//   float3 m1;
4577//   float3 precalc;
4578//
4579//
4580// Registers:
4581//
4582//   Name         Reg   Size
4583//   ------------ ----- ----
4584//   fractions    c0       7
4585//   m0           c16      1
4586//   m1           c17      1
4587//   precalc      c18      1
4588//   colors       s0       1
4589//
4590
4591    ps_2_0
4592    def c7, 1, 0, 0.5, -1
4593    def c8, 1, 0.5, 0.0625, 0.03125
4594    dcl t0.xy
4595    dcl v0
4596    dcl_2d s0
4597    mov r0.z, c7.x
4598    mov r0.xy, t0
4599    dp3 r0.w, r0, c17
4600    mul r0.w, r0.w, r0.w
4601    mul r0.w, r0.w, c18.y
4602    dp3 r0.x, r0, c16
4603    add r0.x, r0.x, -c18.x
4604    mad r0.y, r0.x, r0.x, r0.w
4605    rsq r0.y, r0.y
4606    rcp r0.y, r0.y
4607    mad r0.x, c18.x, r0.x, r0.y
4608    mov r0.z, c18.z
4609    mad r0.y, r0.x, r0.z, -c0.x
4610    mul_sat r0.y, r0.y, c0.y
4611    mad r0.w, r0.x, r0.z, -c1.x
4612    mul_sat r0.w, r0.w, c1.y
4613    add r0.y, r0.y, r0.w
4614    mad r0.w, r0.x, r0.z, -c2.x
4615    mul_sat r0.w, r0.w, c2.y
4616    add r0.y, r0.y, r0.w
4617    mad r0.w, r0.x, r0.z, -c3.x
4618    mul_sat r0.w, r0.w, c3.y
4619    add r0.y, r0.y, r0.w
4620    mad r0.w, r0.x, r0.z, -c4.x
4621    mul_sat r0.w, r0.w, c4.y
4622    add r0.y, r0.y, r0.w
4623    mad r0.w, r0.x, r0.z, -c5.x
4624    mul_sat r0.w, r0.w, c5.y
4625    add r0.y, r0.y, r0.w
4626    mad r0.w, r0.x, r0.z, -c6.x
4627    mul_sat r0.w, r0.w, c6.y
4628    add r0.y, r0.y, r0.w
4629    frc r0.w, r0.y
4630    add r0.y, r0.y, -r0.w
4631    add r1.w, r0.y, c7.x
4632    mad r1.x, r1.w, c8.z, c8.w
4633    mul r1.z, r0.x, c18.z
4634    mad r1.w, r0.x, r0.z, c7.w
4635    mad r0.x, r0.y, c8.z, c8.w
4636    mov r0.y, c7.z
4637    mov r1.y, c7.z
4638    mov r2.xy, c8
4639    mov r3.xy, c7.yzxw
4640    texld r4, r0, s0
4641    texld r5, r1, s0
4642    texld r2, r2, s0
4643    texld r3, r3, s0
4644    lrp r6, r0.w, r5, r4
4645    cmp r0, r1.w, r2, r6
4646    cmp r0, -r1.z, r3, r0
4647    mul r0, r0, v0
4648    mov oC0, r0
4649
4650// approximately 52 instruction slots used (4 texture, 48 arithmetic)
4651#endif
4652
4653const DWORD radial4[] =
4654{
4655    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
4656    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
4657    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020007,
4658    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
4659    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
4660    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
4661    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
4662    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000,
4663    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
4664    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
4665    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
4666    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0007,
4667    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0008,
4668    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x0200001f, 0x80000000,
4669    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
4670    0xa00f0800, 0x02000001, 0x80040000, 0xa0000007, 0x02000001, 0x80030000,
4671    0xb0e40000, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000005,
4672    0x80080000, 0x80ff0000, 0x80ff0000, 0x03000005, 0x80080000, 0x80ff0000,
4673    0xa0550012, 0x03000008, 0x80010000, 0x80e40000, 0xa0e40010, 0x03000002,
4674    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
4675    0x80000000, 0x80ff0000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
4676    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
4677    0x80550000, 0x02000001, 0x80040000, 0xa0aa0012, 0x04000004, 0x80020000,
4678    0x80000000, 0x80aa0000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
4679    0xa0550000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000001,
4680    0x03000005, 0x80180000, 0x80ff0000, 0xa0550001, 0x03000002, 0x80020000,
4681    0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000,
4682    0xa1000002, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550002, 0x03000002,
4683    0x80020000, 0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000,
4684    0x80aa0000, 0xa1000003, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550003,
4685    0x03000002, 0x80020000, 0x80550000, 0x80ff0000, 0x04000004, 0x80080000,
4686    0x80000000, 0x80aa0000, 0xa1000004, 0x03000005, 0x80180000, 0x80ff0000,
4687    0xa0550004, 0x03000002, 0x80020000, 0x80550000, 0x80ff0000, 0x04000004,
4688    0x80080000, 0x80000000, 0x80aa0000, 0xa1000005, 0x03000005, 0x80180000,
4689    0x80ff0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80ff0000,
4690    0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000006, 0x03000005,
4691    0x80180000, 0x80ff0000, 0xa0550006, 0x03000002, 0x80020000, 0x80550000,
4692    0x80ff0000, 0x02000013, 0x80080000, 0x80550000, 0x03000002, 0x80020000,
4693    0x80550000, 0x81ff0000, 0x03000002, 0x80080001, 0x80550000, 0xa0000007,
4694    0x04000004, 0x80010001, 0x80ff0001, 0xa0aa0008, 0xa0ff0008, 0x03000005,
4695    0x80040001, 0x80000000, 0xa0aa0012, 0x04000004, 0x80080001, 0x80000000,
4696    0x80aa0000, 0xa0ff0007, 0x04000004, 0x80010000, 0x80550000, 0xa0aa0008,
4697    0xa0ff0008, 0x02000001, 0x80020000, 0xa0aa0007, 0x02000001, 0x80020001,
4698    0xa0aa0007, 0x02000001, 0x80030002, 0xa0e40008, 0x02000001, 0x80030003,
4699    0xa0c90007, 0x03000042, 0x800f0004, 0x80e40000, 0xa0e40800, 0x03000042,
4700    0x800f0005, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0002, 0x80e40002,
4701    0xa0e40800, 0x03000042, 0x800f0003, 0x80e40003, 0xa0e40800, 0x04000012,
4702    0x800f0006, 0x80ff0000, 0x80e40005, 0x80e40004, 0x04000058, 0x800f0000,
4703    0x80ff0001, 0x80e40002, 0x80e40006, 0x04000058, 0x800f0000, 0x81aa0001,
4704    0x80e40003, 0x80e40000, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000,
4705    0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
4706};
4707#if 0
4708//
4709// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
4710//
4711//   fxc /T ps_2_0 /Vn radial5 /Fh tmp.h tmp.hlsl
4712//
4713//
4714// Parameters:
4715//
4716//   sampler2D colors;
4717//   float2 fractions[8];
4718//   float3 m0;
4719//   float3 m1;
4720//   float3 precalc;
4721//
4722//
4723// Registers:
4724//
4725//   Name         Reg   Size
4726//   ------------ ----- ----
4727//   fractions    c0       7
4728//   m0           c16      1
4729//   m1           c17      1
4730//   precalc      c18      1
4731//   colors       s0       1
4732//
4733
4734    ps_2_0
4735    def c7, 1, 0.5, -0.5, 2
4736    def c8, 0.0625, 0.03125, 0, 0
4737    dcl t0.xy
4738    dcl v0
4739    dcl_2d s0
4740    mov r0.xy, t0
4741    mov r0.z, c7.x
4742    dp3 r0.w, r0, c17
4743    dp3 r0.x, r0, c16
4744    mul r0.y, r0.w, r0.w
4745    mul r0.y, r0.y, c18.y
4746    add r0.x, r0.x, -c18.x
4747    mad r0.y, r0.x, r0.x, r0.y
4748    rsq r0.y, r0.y
4749    rcp r0.y, r0.y
4750    mad r0.x, c18.x, r0.x, r0.y
4751    mul r0.x, r0.x, c18.z
4752    mul r0.x, r0.x, c7.y
4753    frc r0.x, r0.x
4754    add r0.x, r0.x, c7.z
4755    abs r0.x, r0.x
4756    mad r0.x, r0.x, -c7.w, c7.x
4757    add r0.y, r0.x, -c0.x
4758    mul_sat r0.y, r0.y, c0.y
4759    add r0.z, r0.x, -c1.x
4760    mul_sat r0.z, r0.z, c1.y
4761    add r0.y, r0.y, r0.z
4762    add r0.z, r0.x, -c2.x
4763    mul_sat r0.z, r0.z, c2.y
4764    add r0.y, r0.y, r0.z
4765    add r0.z, r0.x, -c3.x
4766    mul_sat r0.z, r0.z, c3.y
4767    add r0.y, r0.y, r0.z
4768    add r0.z, r0.x, -c4.x
4769    mul_sat r0.z, r0.z, c4.y
4770    add r0.y, r0.y, r0.z
4771    add r0.z, r0.x, -c5.x
4772    add r0.x, r0.x, -c6.x
4773    mul_sat r0.z, r0.z, c5.y
4774    add r0.y, r0.y, r0.z
4775    mul_sat r0.x, r0.x, c6.y
4776    add r0.x, r0.y, r0.x
4777    frc r0.y, r0.x
4778    add r0.x, r0.x, -r0.y
4779    add r0.z, r0.x, c7.x
4780    mad r1.x, r0.x, c8.x, c8.y
4781    mad r2.x, r0.z, c8.x, c8.y
4782    mov r2.y, c7.y
4783    mov r1.y, c7.y
4784    texld r2, r2, s0
4785    texld r1, r1, s0
4786    lrp r3, r0.y, r2, r1
4787    mul r0, r3, v0
4788    mov oC0, r0
4789
4790// approximately 49 instruction slots used (2 texture, 47 arithmetic)
4791#endif
4792
4793const DWORD radial5[] =
4794{
4795    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
4796    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
4797    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020007,
4798    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
4799    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
4800    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
4801    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
4802    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000,
4803    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
4804    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
4805    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
4806    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0007,
4807    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0008,
4808    0x3d800000, 0x3d000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
4809    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
4810    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
4811    0xa0000007, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
4812    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
4813    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
4814    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
4815    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
4816    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
4817    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x03000005,
4818    0x80010000, 0x80000000, 0xa0550007, 0x02000013, 0x80010000, 0x80000000,
4819    0x03000002, 0x80010000, 0x80000000, 0xa0aa0007, 0x02000023, 0x80010000,
4820    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0007, 0xa0000007,
4821    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
4822    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
4823    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
4824    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002,
4825    0x03000005, 0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000,
4826    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003,
4827    0x03000005, 0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000,
4828    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004,
4829    0x03000005, 0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000,
4830    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005,
4831    0x03000002, 0x80010000, 0x80000000, 0xa1000006, 0x03000005, 0x80140000,
4832    0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
4833    0x03000005, 0x80110000, 0x80000000, 0xa0550006, 0x03000002, 0x80010000,
4834    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
4835    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
4836    0xa0000007, 0x04000004, 0x80010001, 0x80000000, 0xa0000008, 0xa0550008,
4837    0x04000004, 0x80010002, 0x80aa0000, 0xa0000008, 0xa0550008, 0x02000001,
4838    0x80020002, 0xa0550007, 0x02000001, 0x80020001, 0xa0550007, 0x03000042,
4839    0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042, 0x800f0001, 0x80e40001,
4840    0xa0e40800, 0x04000012, 0x800f0003, 0x80550000, 0x80e40002, 0x80e40001,
4841    0x03000005, 0x800f0000, 0x80e40003, 0x90e40000, 0x02000001, 0x800f0800,
4842    0x80e40000, 0x0000ffff
4843};
4844#if 0
4845//
4846// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
4847//
4848//   fxc /T ps_2_0 /Vn radial6 /Fh tmp.h tmp.hlsl
4849//
4850//
4851// Parameters:
4852//
4853//   sampler2D colors;
4854//   float2 fractions[8];
4855//   float3 m0;
4856//   float3 m1;
4857//   float3 precalc;
4858//
4859//
4860// Registers:
4861//
4862//   Name         Reg   Size
4863//   ------------ ----- ----
4864//   fractions    c0       7
4865//   m0           c16      1
4866//   m1           c17      1
4867//   precalc      c18      1
4868//   colors       s0       1
4869//
4870
4871    ps_2_0
4872    def c7, 1, 0.0625, 0.03125, 0.5
4873    dcl t0.xy
4874    dcl v0
4875    dcl_2d s0
4876    mov r0.xy, t0
4877    mov r0.z, c7.x
4878    dp3 r0.w, r0, c17
4879    dp3 r0.x, r0, c16
4880    mul r0.y, r0.w, r0.w
4881    mul r0.y, r0.y, c18.y
4882    add r0.x, r0.x, -c18.x
4883    mad r0.y, r0.x, r0.x, r0.y
4884    rsq r0.y, r0.y
4885    rcp r0.y, r0.y
4886    mad r0.x, c18.x, r0.x, r0.y
4887    mul r0.x, r0.x, c18.z
4888    frc r0.x, r0.x
4889    add r0.y, r0.x, -c0.x
4890    mul_sat r0.y, r0.y, c0.y
4891    add r0.z, r0.x, -c1.x
4892    mul_sat r0.z, r0.z, c1.y
4893    add r0.y, r0.y, r0.z
4894    add r0.z, r0.x, -c2.x
4895    mul_sat r0.z, r0.z, c2.y
4896    add r0.y, r0.y, r0.z
4897    add r0.z, r0.x, -c3.x
4898    mul_sat r0.z, r0.z, c3.y
4899    add r0.y, r0.y, r0.z
4900    add r0.z, r0.x, -c4.x
4901    mul_sat r0.z, r0.z, c4.y
4902    add r0.y, r0.y, r0.z
4903    add r0.z, r0.x, -c5.x
4904    add r0.x, r0.x, -c6.x
4905    mul_sat r0.z, r0.z, c5.y
4906    add r0.y, r0.y, r0.z
4907    mul_sat r0.x, r0.x, c6.y
4908    add r0.x, r0.y, r0.x
4909    frc r0.y, r0.x
4910    add r0.x, r0.x, -r0.y
4911    add r0.z, r0.x, c7.x
4912    mad r1.x, r0.x, c7.y, c7.z
4913    mad r2.x, r0.z, c7.y, c7.z
4914    mov r2.y, c7.w
4915    mov r1.y, c7.w
4916    texld r2, r2, s0
4917    texld r1, r1, s0
4918    lrp r3, r0.y, r2, r1
4919    mul r0, r3, v0
4920    mov oC0, r0
4921
4922// approximately 45 instruction slots used (2 texture, 43 arithmetic)
4923#endif
4924
4925const DWORD radial6[] =
4926{
4927    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
4928    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
4929    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020007,
4930    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
4931    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
4932    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
4933    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
4934    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000,
4935    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
4936    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
4937    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
4938    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0007,
4939    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x0200001f, 0x80000000,
4940    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
4941    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
4942    0xa0000007, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
4943    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
4944    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
4945    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
4946    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
4947    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
4948    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x02000013,
4949    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
4950    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
4951    0x80000000, 0xa1000001, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550001,
4952    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
4953    0x80000000, 0xa1000002, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550002,
4954    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
4955    0x80000000, 0xa1000003, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550003,
4956    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
4957    0x80000000, 0xa1000004, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550004,
4958    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
4959    0x80000000, 0xa1000005, 0x03000002, 0x80010000, 0x80000000, 0xa1000006,
4960    0x03000005, 0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000,
4961    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550006,
4962    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
4963    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
4964    0x80040000, 0x80000000, 0xa0000007, 0x04000004, 0x80010001, 0x80000000,
4965    0xa0550007, 0xa0aa0007, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550007,
4966    0xa0aa0007, 0x02000001, 0x80020002, 0xa0ff0007, 0x02000001, 0x80020001,
4967    0xa0ff0007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042,
4968    0x800f0001, 0x80e40001, 0xa0e40800, 0x04000012, 0x800f0003, 0x80550000,
4969    0x80e40002, 0x80e40001, 0x03000005, 0x800f0000, 0x80e40003, 0x90e40000,
4970    0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
4971};
4972#if 0
4973//
4974// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
4975//
4976//   fxc /T ps_2_0 /Vn radial8 /Fh tmp.h tmp.hlsl
4977//
4978//
4979// Parameters:
4980//
4981//   sampler2D colors;
4982//   float2 fractions[4];
4983//   float3 m0;
4984//   float3 m1;
4985//   sampler2D mask;
4986//   float3 precalc;
4987//
4988//
4989// Registers:
4990//
4991//   Name         Reg   Size
4992//   ------------ ----- ----
4993//   fractions    c0       3
4994//   m0           c16      1
4995//   m1           c17      1
4996//   precalc      c18      1
4997//   mask         s0       1
4998//   colors       s1       1
4999//
5000
5001    ps_2_0
5002    def c3, 1, 0, 0.5, -1
5003    def c4, 1, 0.5, 0.0625, 0.03125
5004    dcl t0.xy
5005    dcl t1.xy
5006    dcl v0
5007    dcl_2d s0
5008    dcl_2d s1
5009    mov r0.z, c3.x
5010    mov r0.xy, t1
5011    dp3 r0.w, r0, c17
5012    mul r0.w, r0.w, r0.w
5013    mul r0.w, r0.w, c18.y
5014    dp3 r0.x, r0, c16
5015    add r0.x, r0.x, -c18.x
5016    mad r0.y, r0.x, r0.x, r0.w
5017    rsq r0.y, r0.y
5018    rcp r0.y, r0.y
5019    mad r0.x, c18.x, r0.x, r0.y
5020    mov r0.z, c18.z
5021    mad r0.y, r0.x, r0.z, -c0.x
5022    mul_sat r0.y, r0.y, c0.y
5023    mad r0.w, r0.x, r0.z, -c1.x
5024    mul_sat r0.w, r0.w, c1.y
5025    add r0.y, r0.y, r0.w
5026    mad r0.w, r0.x, r0.z, -c2.x
5027    mul_sat r0.w, r0.w, c2.y
5028    add r0.y, r0.y, r0.w
5029    frc r0.w, r0.y
5030    add r0.y, r0.y, -r0.w
5031    add r1.w, r0.y, c3.x
5032    mad r1.x, r1.w, c4.z, c4.w
5033    mul r1.z, r0.x, c18.z
5034    mad r1.w, r0.x, r0.z, c3.w
5035    mad r0.x, r0.y, c4.z, c4.w
5036    mov r0.y, c3.z
5037    mov r1.y, c3.z
5038    mov r2.xy, c4
5039    mov r3.xy, c3.yzxw
5040    texld r4, r0, s1
5041    texld r5, r1, s1
5042    texld r2, r2, s1
5043    texld r3, r3, s1
5044    texld r6, t0, s0
5045    lrp r7, r0.w, r5, r4
5046    cmp r0, r1.w, r2, r7
5047    cmp r0, -r1.z, r3, r0
5048    mul r0, r6.w, r0
5049    mul r0, r0, v0
5050    mov oC0, r0
5051
5052// approximately 42 instruction slots used (5 texture, 37 arithmetic)
5053#endif
5054
5055const DWORD radial8[] =
5056{
5057    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
5058    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
5059    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020003,
5060    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
5061    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
5062    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
5063    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
5064    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
5065    0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000, 0xab00306d,
5066    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
5067    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
5068    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
5069    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
5070    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0004,
5071    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x0200001f, 0x80000000,
5072    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
5073    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
5074    0xa00f0801, 0x02000001, 0x80040000, 0xa0000003, 0x02000001, 0x80030000,
5075    0xb0e40001, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000005,
5076    0x80080000, 0x80ff0000, 0x80ff0000, 0x03000005, 0x80080000, 0x80ff0000,
5077    0xa0550012, 0x03000008, 0x80010000, 0x80e40000, 0xa0e40010, 0x03000002,
5078    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
5079    0x80000000, 0x80ff0000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
5080    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
5081    0x80550000, 0x02000001, 0x80040000, 0xa0aa0012, 0x04000004, 0x80020000,
5082    0x80000000, 0x80aa0000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
5083    0xa0550000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000001,
5084    0x03000005, 0x80180000, 0x80ff0000, 0xa0550001, 0x03000002, 0x80020000,
5085    0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000,
5086    0xa1000002, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550002, 0x03000002,
5087    0x80020000, 0x80550000, 0x80ff0000, 0x02000013, 0x80080000, 0x80550000,
5088    0x03000002, 0x80020000, 0x80550000, 0x81ff0000, 0x03000002, 0x80080001,
5089    0x80550000, 0xa0000003, 0x04000004, 0x80010001, 0x80ff0001, 0xa0aa0004,
5090    0xa0ff0004, 0x03000005, 0x80040001, 0x80000000, 0xa0aa0012, 0x04000004,
5091    0x80080001, 0x80000000, 0x80aa0000, 0xa0ff0003, 0x04000004, 0x80010000,
5092    0x80550000, 0xa0aa0004, 0xa0ff0004, 0x02000001, 0x80020000, 0xa0aa0003,
5093    0x02000001, 0x80020001, 0xa0aa0003, 0x02000001, 0x80030002, 0xa0e40004,
5094    0x02000001, 0x80030003, 0xa0c90003, 0x03000042, 0x800f0004, 0x80e40000,
5095    0xa0e40801, 0x03000042, 0x800f0005, 0x80e40001, 0xa0e40801, 0x03000042,
5096    0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0003, 0x80e40003,
5097    0xa0e40801, 0x03000042, 0x800f0006, 0xb0e40000, 0xa0e40800, 0x04000012,
5098    0x800f0007, 0x80ff0000, 0x80e40005, 0x80e40004, 0x04000058, 0x800f0000,
5099    0x80ff0001, 0x80e40002, 0x80e40007, 0x04000058, 0x800f0000, 0x81aa0001,
5100    0x80e40003, 0x80e40000, 0x03000005, 0x800f0000, 0x80ff0006, 0x80e40000,
5101    0x03000005, 0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800,
5102    0x80e40000, 0x0000ffff
5103};
5104#if 0
5105//
5106// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
5107//
5108//   fxc /T ps_2_0 /Vn radial9 /Fh tmp.h tmp.hlsl
5109//
5110//
5111// Parameters:
5112//
5113//   sampler2D colors;
5114//   float2 fractions[4];
5115//   float3 m0;
5116//   float3 m1;
5117//   sampler2D mask;
5118//   float3 precalc;
5119//
5120//
5121// Registers:
5122//
5123//   Name         Reg   Size
5124//   ------------ ----- ----
5125//   fractions    c0       3
5126//   m0           c16      1
5127//   m1           c17      1
5128//   precalc      c18      1
5129//   mask         s0       1
5130//   colors       s1       1
5131//
5132
5133    ps_2_0
5134    def c3, 1, 0.5, -0.5, 2
5135    def c4, 0.0625, 0.03125, 0, 0
5136    dcl t0.xy
5137    dcl t1.xy
5138    dcl v0
5139    dcl_2d s0
5140    dcl_2d s1
5141    mov r0.xy, t1
5142    mov r0.z, c3.x
5143    dp3 r0.w, r0, c17
5144    dp3 r0.x, r0, c16
5145    mul r0.y, r0.w, r0.w
5146    mul r0.y, r0.y, c18.y
5147    add r0.x, r0.x, -c18.x
5148    mad r0.y, r0.x, r0.x, r0.y
5149    rsq r0.y, r0.y
5150    rcp r0.y, r0.y
5151    mad r0.x, c18.x, r0.x, r0.y
5152    mul r0.x, r0.x, c18.z
5153    mul r0.x, r0.x, c3.y
5154    frc r0.x, r0.x
5155    add r0.x, r0.x, c3.z
5156    abs r0.x, r0.x
5157    mad r0.x, r0.x, -c3.w, c3.x
5158    add r0.y, r0.x, -c0.x
5159    mul_sat r0.y, r0.y, c0.y
5160    add r0.z, r0.x, -c1.x
5161    add r0.x, r0.x, -c2.x
5162    mul_sat r0.z, r0.z, c1.y
5163    add r0.y, r0.y, r0.z
5164    mul_sat r0.x, r0.x, c2.y
5165    add r0.x, r0.y, r0.x
5166    frc r0.y, r0.x
5167    add r0.x, r0.x, -r0.y
5168    add r0.z, r0.x, c3.x
5169    mad r1.x, r0.x, c4.x, c4.y
5170    mad r2.x, r0.z, c4.x, c4.y
5171    mov r2.y, c3.y
5172    mov r1.y, c3.y
5173    texld r2, r2, s1
5174    texld r1, r1, s1
5175    texld r3, t0, s0
5176    lrp r4, r0.y, r2, r1
5177    mul r0, r3.w, r4
5178    mul r0, r0, v0
5179    mov oC0, r0
5180
5181// approximately 39 instruction slots used (3 texture, 36 arithmetic)
5182#endif
5183
5184const DWORD radial9[] =
5185{
5186    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
5187    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
5188    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020003,
5189    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
5190    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
5191    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
5192    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
5193    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
5194    0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000, 0xab00306d,
5195    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
5196    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
5197    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
5198    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
5199    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0004,
5200    0x3d800000, 0x3d000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
5201    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
5202    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
5203    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
5204    0xa0000003, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
5205    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
5206    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
5207    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
5208    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
5209    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
5210    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x03000005,
5211    0x80010000, 0x80000000, 0xa0550003, 0x02000013, 0x80010000, 0x80000000,
5212    0x03000002, 0x80010000, 0x80000000, 0xa0aa0003, 0x02000023, 0x80010000,
5213    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0003, 0xa0000003,
5214    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
5215    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
5216    0x03000002, 0x80010000, 0x80000000, 0xa1000002, 0x03000005, 0x80140000,
5217    0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
5218    0x03000005, 0x80110000, 0x80000000, 0xa0550002, 0x03000002, 0x80010000,
5219    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
5220    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
5221    0xa0000003, 0x04000004, 0x80010001, 0x80000000, 0xa0000004, 0xa0550004,
5222    0x04000004, 0x80010002, 0x80aa0000, 0xa0000004, 0xa0550004, 0x02000001,
5223    0x80020002, 0xa0550003, 0x02000001, 0x80020001, 0xa0550003, 0x03000042,
5224    0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0001, 0x80e40001,
5225    0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000, 0xa0e40800, 0x04000012,
5226    0x800f0004, 0x80550000, 0x80e40002, 0x80e40001, 0x03000005, 0x800f0000,
5227    0x80ff0003, 0x80e40004, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000,
5228    0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
5229};
5230#if 0
5231//
5232// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
5233//
5234//   fxc /T ps_2_0 /Vn radial10 /Fh tmp.h tmp.hlsl
5235//
5236//
5237// Parameters:
5238//
5239//   sampler2D colors;
5240//   float2 fractions[4];
5241//   float3 m0;
5242//   float3 m1;
5243//   sampler2D mask;
5244//   float3 precalc;
5245//
5246//
5247// Registers:
5248//
5249//   Name         Reg   Size
5250//   ------------ ----- ----
5251//   fractions    c0       3
5252//   m0           c16      1
5253//   m1           c17      1
5254//   precalc      c18      1
5255//   mask         s0       1
5256//   colors       s1       1
5257//
5258
5259    ps_2_0
5260    def c3, 1, 0.0625, 0.03125, 0.5
5261    dcl t0.xy
5262    dcl t1.xy
5263    dcl v0
5264    dcl_2d s0
5265    dcl_2d s1
5266    mov r0.xy, t1
5267    mov r0.z, c3.x
5268    dp3 r0.w, r0, c17
5269    dp3 r0.x, r0, c16
5270    mul r0.y, r0.w, r0.w
5271    mul r0.y, r0.y, c18.y
5272    add r0.x, r0.x, -c18.x
5273    mad r0.y, r0.x, r0.x, r0.y
5274    rsq r0.y, r0.y
5275    rcp r0.y, r0.y
5276    mad r0.x, c18.x, r0.x, r0.y
5277    mul r0.x, r0.x, c18.z
5278    frc r0.x, r0.x
5279    add r0.y, r0.x, -c0.x
5280    mul_sat r0.y, r0.y, c0.y
5281    add r0.z, r0.x, -c1.x
5282    add r0.x, r0.x, -c2.x
5283    mul_sat r0.z, r0.z, c1.y
5284    add r0.y, r0.y, r0.z
5285    mul_sat r0.x, r0.x, c2.y
5286    add r0.x, r0.y, r0.x
5287    frc r0.y, r0.x
5288    add r0.x, r0.x, -r0.y
5289    add r0.z, r0.x, c3.x
5290    mad r1.x, r0.x, c3.y, c3.z
5291    mad r2.x, r0.z, c3.y, c3.z
5292    mov r2.y, c3.w
5293    mov r1.y, c3.w
5294    texld r2, r2, s1
5295    texld r1, r1, s1
5296    texld r3, t0, s0
5297    lrp r4, r0.y, r2, r1
5298    mul r0, r3.w, r4
5299    mul r0, r0, v0
5300    mov oC0, r0
5301
5302// approximately 35 instruction slots used (3 texture, 32 arithmetic)
5303#endif
5304
5305const DWORD radial10[] =
5306{
5307    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
5308    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
5309    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020003,
5310    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
5311    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
5312    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
5313    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
5314    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
5315    0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000, 0xab00306d,
5316    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
5317    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
5318    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
5319    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
5320    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x0200001f, 0x80000000,
5321    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
5322    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
5323    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
5324    0xa0000003, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
5325    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
5326    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
5327    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
5328    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
5329    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
5330    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x02000013,
5331    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
5332    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
5333    0x80000000, 0xa1000001, 0x03000002, 0x80010000, 0x80000000, 0xa1000002,
5334    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
5335    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550002,
5336    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
5337    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
5338    0x80040000, 0x80000000, 0xa0000003, 0x04000004, 0x80010001, 0x80000000,
5339    0xa0550003, 0xa0aa0003, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550003,
5340    0xa0aa0003, 0x02000001, 0x80020002, 0xa0ff0003, 0x02000001, 0x80020001,
5341    0xa0ff0003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042,
5342    0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000,
5343    0xa0e40800, 0x04000012, 0x800f0004, 0x80550000, 0x80e40002, 0x80e40001,
5344    0x03000005, 0x800f0000, 0x80ff0003, 0x80e40004, 0x03000005, 0x800f0000,
5345    0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
5346};
5347#if 0
5348//
5349// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
5350//
5351//   fxc /T ps_2_0 /Vn radial12 /Fh tmp.h tmp.hlsl
5352//
5353//
5354// Parameters:
5355//
5356//   sampler2D colors;
5357//   float2 fractions[8];
5358//   float3 m0;
5359//   float3 m1;
5360//   sampler2D mask;
5361//   float3 precalc;
5362//
5363//
5364// Registers:
5365//
5366//   Name         Reg   Size
5367//   ------------ ----- ----
5368//   fractions    c0       7
5369//   m0           c16      1
5370//   m1           c17      1
5371//   precalc      c18      1
5372//   mask         s0       1
5373//   colors       s1       1
5374//
5375
5376    ps_2_0
5377    def c7, 1, 0, 0.5, -1
5378    def c8, 1, 0.5, 0.0625, 0.03125
5379    dcl t0.xy
5380    dcl t1.xy
5381    dcl v0
5382    dcl_2d s0
5383    dcl_2d s1
5384    mov r0.z, c7.x
5385    mov r0.xy, t1
5386    dp3 r0.w, r0, c17
5387    mul r0.w, r0.w, r0.w
5388    mul r0.w, r0.w, c18.y
5389    dp3 r0.x, r0, c16
5390    add r0.x, r0.x, -c18.x
5391    mad r0.y, r0.x, r0.x, r0.w
5392    rsq r0.y, r0.y
5393    rcp r0.y, r0.y
5394    mad r0.x, c18.x, r0.x, r0.y
5395    mov r0.z, c18.z
5396    mad r0.y, r0.x, r0.z, -c0.x
5397    mul_sat r0.y, r0.y, c0.y
5398    mad r0.w, r0.x, r0.z, -c1.x
5399    mul_sat r0.w, r0.w, c1.y
5400    add r0.y, r0.y, r0.w
5401    mad r0.w, r0.x, r0.z, -c2.x
5402    mul_sat r0.w, r0.w, c2.y
5403    add r0.y, r0.y, r0.w
5404    mad r0.w, r0.x, r0.z, -c3.x
5405    mul_sat r0.w, r0.w, c3.y
5406    add r0.y, r0.y, r0.w
5407    mad r0.w, r0.x, r0.z, -c4.x
5408    mul_sat r0.w, r0.w, c4.y
5409    add r0.y, r0.y, r0.w
5410    mad r0.w, r0.x, r0.z, -c5.x
5411    mul_sat r0.w, r0.w, c5.y
5412    add r0.y, r0.y, r0.w
5413    mad r0.w, r0.x, r0.z, -c6.x
5414    mul_sat r0.w, r0.w, c6.y
5415    add r0.y, r0.y, r0.w
5416    frc r0.w, r0.y
5417    add r0.y, r0.y, -r0.w
5418    add r1.w, r0.y, c7.x
5419    mad r1.x, r1.w, c8.z, c8.w
5420    mul r1.z, r0.x, c18.z
5421    mad r1.w, r0.x, r0.z, c7.w
5422    mad r0.x, r0.y, c8.z, c8.w
5423    mov r0.y, c7.z
5424    mov r1.y, c7.z
5425    mov r2.xy, c8
5426    mov r3.xy, c7.yzxw
5427    texld r4, r0, s1
5428    texld r5, r1, s1
5429    texld r2, r2, s1
5430    texld r3, r3, s1
5431    texld r6, t0, s0
5432    lrp r7, r0.w, r5, r4
5433    cmp r0, r1.w, r2, r7
5434    cmp r0, -r1.z, r3, r0
5435    mul r0, r6.w, r0
5436    mul r0, r0, v0
5437    mov oC0, r0
5438
5439// approximately 54 instruction slots used (5 texture, 49 arithmetic)
5440#endif
5441
5442const DWORD radial12[] =
5443{
5444    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
5445    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
5446    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020007,
5447    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
5448    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
5449    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
5450    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
5451    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
5452    0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000, 0xab00306d,
5453    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
5454    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
5455    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
5456    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
5457    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0008,
5458    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x0200001f, 0x80000000,
5459    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
5460    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
5461    0xa00f0801, 0x02000001, 0x80040000, 0xa0000007, 0x02000001, 0x80030000,
5462    0xb0e40001, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000005,
5463    0x80080000, 0x80ff0000, 0x80ff0000, 0x03000005, 0x80080000, 0x80ff0000,
5464    0xa0550012, 0x03000008, 0x80010000, 0x80e40000, 0xa0e40010, 0x03000002,
5465    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
5466    0x80000000, 0x80ff0000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
5467    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
5468    0x80550000, 0x02000001, 0x80040000, 0xa0aa0012, 0x04000004, 0x80020000,
5469    0x80000000, 0x80aa0000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
5470    0xa0550000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000001,
5471    0x03000005, 0x80180000, 0x80ff0000, 0xa0550001, 0x03000002, 0x80020000,
5472    0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000,
5473    0xa1000002, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550002, 0x03000002,
5474    0x80020000, 0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000,
5475    0x80aa0000, 0xa1000003, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550003,
5476    0x03000002, 0x80020000, 0x80550000, 0x80ff0000, 0x04000004, 0x80080000,
5477    0x80000000, 0x80aa0000, 0xa1000004, 0x03000005, 0x80180000, 0x80ff0000,
5478    0xa0550004, 0x03000002, 0x80020000, 0x80550000, 0x80ff0000, 0x04000004,
5479    0x80080000, 0x80000000, 0x80aa0000, 0xa1000005, 0x03000005, 0x80180000,
5480    0x80ff0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80ff0000,
5481    0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000006, 0x03000005,
5482    0x80180000, 0x80ff0000, 0xa0550006, 0x03000002, 0x80020000, 0x80550000,
5483    0x80ff0000, 0x02000013, 0x80080000, 0x80550000, 0x03000002, 0x80020000,
5484    0x80550000, 0x81ff0000, 0x03000002, 0x80080001, 0x80550000, 0xa0000007,
5485    0x04000004, 0x80010001, 0x80ff0001, 0xa0aa0008, 0xa0ff0008, 0x03000005,
5486    0x80040001, 0x80000000, 0xa0aa0012, 0x04000004, 0x80080001, 0x80000000,
5487    0x80aa0000, 0xa0ff0007, 0x04000004, 0x80010000, 0x80550000, 0xa0aa0008,
5488    0xa0ff0008, 0x02000001, 0x80020000, 0xa0aa0007, 0x02000001, 0x80020001,
5489    0xa0aa0007, 0x02000001, 0x80030002, 0xa0e40008, 0x02000001, 0x80030003,
5490    0xa0c90007, 0x03000042, 0x800f0004, 0x80e40000, 0xa0e40801, 0x03000042,
5491    0x800f0005, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0002, 0x80e40002,
5492    0xa0e40801, 0x03000042, 0x800f0003, 0x80e40003, 0xa0e40801, 0x03000042,
5493    0x800f0006, 0xb0e40000, 0xa0e40800, 0x04000012, 0x800f0007, 0x80ff0000,
5494    0x80e40005, 0x80e40004, 0x04000058, 0x800f0000, 0x80ff0001, 0x80e40002,
5495    0x80e40007, 0x04000058, 0x800f0000, 0x81aa0001, 0x80e40003, 0x80e40000,
5496    0x03000005, 0x800f0000, 0x80ff0006, 0x80e40000, 0x03000005, 0x800f0000,
5497    0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
5498};
5499#if 0
5500//
5501// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
5502//
5503//   fxc /T ps_2_0 /Vn radial13 /Fh tmp.h tmp.hlsl
5504//
5505//
5506// Parameters:
5507//
5508//   sampler2D colors;
5509//   float2 fractions[8];
5510//   float3 m0;
5511//   float3 m1;
5512//   sampler2D mask;
5513//   float3 precalc;
5514//
5515//
5516// Registers:
5517//
5518//   Name         Reg   Size
5519//   ------------ ----- ----
5520//   fractions    c0       7
5521//   m0           c16      1
5522//   m1           c17      1
5523//   precalc      c18      1
5524//   mask         s0       1
5525//   colors       s1       1
5526//
5527
5528    ps_2_0
5529    def c7, 1, 0.5, -0.5, 2
5530    def c8, 0.0625, 0.03125, 0, 0
5531    dcl t0.xy
5532    dcl t1.xy
5533    dcl v0
5534    dcl_2d s0
5535    dcl_2d s1
5536    mov r0.xy, t1
5537    mov r0.z, c7.x
5538    dp3 r0.w, r0, c17
5539    dp3 r0.x, r0, c16
5540    mul r0.y, r0.w, r0.w
5541    mul r0.y, r0.y, c18.y
5542    add r0.x, r0.x, -c18.x
5543    mad r0.y, r0.x, r0.x, r0.y
5544    rsq r0.y, r0.y
5545    rcp r0.y, r0.y
5546    mad r0.x, c18.x, r0.x, r0.y
5547    mul r0.x, r0.x, c18.z
5548    mul r0.x, r0.x, c7.y
5549    frc r0.x, r0.x
5550    add r0.x, r0.x, c7.z
5551    abs r0.x, r0.x
5552    mad r0.x, r0.x, -c7.w, c7.x
5553    add r0.y, r0.x, -c0.x
5554    mul_sat r0.y, r0.y, c0.y
5555    add r0.z, r0.x, -c1.x
5556    mul_sat r0.z, r0.z, c1.y
5557    add r0.y, r0.y, r0.z
5558    add r0.z, r0.x, -c2.x
5559    mul_sat r0.z, r0.z, c2.y
5560    add r0.y, r0.y, r0.z
5561    add r0.z, r0.x, -c3.x
5562    mul_sat r0.z, r0.z, c3.y
5563    add r0.y, r0.y, r0.z
5564    add r0.z, r0.x, -c4.x
5565    mul_sat r0.z, r0.z, c4.y
5566    add r0.y, r0.y, r0.z
5567    add r0.z, r0.x, -c5.x
5568    add r0.x, r0.x, -c6.x
5569    mul_sat r0.z, r0.z, c5.y
5570    add r0.y, r0.y, r0.z
5571    mul_sat r0.x, r0.x, c6.y
5572    add r0.x, r0.y, r0.x
5573    frc r0.y, r0.x
5574    add r0.x, r0.x, -r0.y
5575    add r0.z, r0.x, c7.x
5576    mad r1.x, r0.x, c8.x, c8.y
5577    mad r2.x, r0.z, c8.x, c8.y
5578    mov r2.y, c7.y
5579    mov r1.y, c7.y
5580    texld r2, r2, s1
5581    texld r1, r1, s1
5582    texld r3, t0, s0
5583    lrp r4, r0.y, r2, r1
5584    mul r0, r3.w, r4
5585    mul r0, r0, v0
5586    mov oC0, r0
5587
5588// approximately 51 instruction slots used (3 texture, 48 arithmetic)
5589#endif
5590
5591const DWORD radial13[] =
5592{
5593    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
5594    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
5595    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020007,
5596    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
5597    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
5598    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
5599    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
5600    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
5601    0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000, 0xab00306d,
5602    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
5603    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
5604    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
5605    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
5606    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0008,
5607    0x3d800000, 0x3d000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
5608    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
5609    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
5610    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
5611    0xa0000007, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
5612    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
5613    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
5614    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
5615    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
5616    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
5617    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x03000005,
5618    0x80010000, 0x80000000, 0xa0550007, 0x02000013, 0x80010000, 0x80000000,
5619    0x03000002, 0x80010000, 0x80000000, 0xa0aa0007, 0x02000023, 0x80010000,
5620    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0007, 0xa0000007,
5621    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
5622    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
5623    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
5624    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002,
5625    0x03000005, 0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000,
5626    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003,
5627    0x03000005, 0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000,
5628    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004,
5629    0x03000005, 0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000,
5630    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005,
5631    0x03000002, 0x80010000, 0x80000000, 0xa1000006, 0x03000005, 0x80140000,
5632    0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
5633    0x03000005, 0x80110000, 0x80000000, 0xa0550006, 0x03000002, 0x80010000,
5634    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
5635    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
5636    0xa0000007, 0x04000004, 0x80010001, 0x80000000, 0xa0000008, 0xa0550008,
5637    0x04000004, 0x80010002, 0x80aa0000, 0xa0000008, 0xa0550008, 0x02000001,
5638    0x80020002, 0xa0550007, 0x02000001, 0x80020001, 0xa0550007, 0x03000042,
5639    0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0001, 0x80e40001,
5640    0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000, 0xa0e40800, 0x04000012,
5641    0x800f0004, 0x80550000, 0x80e40002, 0x80e40001, 0x03000005, 0x800f0000,
5642    0x80ff0003, 0x80e40004, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000,
5643    0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
5644};
5645#if 0
5646//
5647// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
5648//
5649//   fxc /T ps_2_0 /Vn radial14 /Fh tmp.h tmp.hlsl
5650//
5651//
5652// Parameters:
5653//
5654//   sampler2D colors;
5655//   float2 fractions[8];
5656//   float3 m0;
5657//   float3 m1;
5658//   sampler2D mask;
5659//   float3 precalc;
5660//
5661//
5662// Registers:
5663//
5664//   Name         Reg   Size
5665//   ------------ ----- ----
5666//   fractions    c0       7
5667//   m0           c16      1
5668//   m1           c17      1
5669//   precalc      c18      1
5670//   mask         s0       1
5671//   colors       s1       1
5672//
5673
5674    ps_2_0
5675    def c7, 1, 0.0625, 0.03125, 0.5
5676    dcl t0.xy
5677    dcl t1.xy
5678    dcl v0
5679    dcl_2d s0
5680    dcl_2d s1
5681    mov r0.xy, t1
5682    mov r0.z, c7.x
5683    dp3 r0.w, r0, c17
5684    dp3 r0.x, r0, c16
5685    mul r0.y, r0.w, r0.w
5686    mul r0.y, r0.y, c18.y
5687    add r0.x, r0.x, -c18.x
5688    mad r0.y, r0.x, r0.x, r0.y
5689    rsq r0.y, r0.y
5690    rcp r0.y, r0.y
5691    mad r0.x, c18.x, r0.x, r0.y
5692    mul r0.x, r0.x, c18.z
5693    frc r0.x, r0.x
5694    add r0.y, r0.x, -c0.x
5695    mul_sat r0.y, r0.y, c0.y
5696    add r0.z, r0.x, -c1.x
5697    mul_sat r0.z, r0.z, c1.y
5698    add r0.y, r0.y, r0.z
5699    add r0.z, r0.x, -c2.x
5700    mul_sat r0.z, r0.z, c2.y
5701    add r0.y, r0.y, r0.z
5702    add r0.z, r0.x, -c3.x
5703    mul_sat r0.z, r0.z, c3.y
5704    add r0.y, r0.y, r0.z
5705    add r0.z, r0.x, -c4.x
5706    mul_sat r0.z, r0.z, c4.y
5707    add r0.y, r0.y, r0.z
5708    add r0.z, r0.x, -c5.x
5709    add r0.x, r0.x, -c6.x
5710    mul_sat r0.z, r0.z, c5.y
5711    add r0.y, r0.y, r0.z
5712    mul_sat r0.x, r0.x, c6.y
5713    add r0.x, r0.y, r0.x
5714    frc r0.y, r0.x
5715    add r0.x, r0.x, -r0.y
5716    add r0.z, r0.x, c7.x
5717    mad r1.x, r0.x, c7.y, c7.z
5718    mad r2.x, r0.z, c7.y, c7.z
5719    mov r2.y, c7.w
5720    mov r1.y, c7.w
5721    texld r2, r2, s1
5722    texld r1, r1, s1
5723    texld r3, t0, s0
5724    lrp r4, r0.y, r2, r1
5725    mul r0, r3.w, r4
5726    mul r0, r0, v0
5727    mov oC0, r0
5728
5729// approximately 47 instruction slots used (3 texture, 44 arithmetic)
5730#endif
5731
5732const DWORD radial14[] =
5733{
5734    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
5735    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
5736    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020007,
5737    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
5738    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
5739    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
5740    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
5741    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
5742    0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000, 0xab00306d,
5743    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
5744    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
5745    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
5746    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
5747    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x0200001f, 0x80000000,
5748    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
5749    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
5750    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
5751    0xa0000007, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
5752    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
5753    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
5754    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
5755    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
5756    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
5757    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x02000013,
5758    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
5759    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
5760    0x80000000, 0xa1000001, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550001,
5761    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
5762    0x80000000, 0xa1000002, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550002,
5763    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
5764    0x80000000, 0xa1000003, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550003,
5765    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
5766    0x80000000, 0xa1000004, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550004,
5767    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
5768    0x80000000, 0xa1000005, 0x03000002, 0x80010000, 0x80000000, 0xa1000006,
5769    0x03000005, 0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000,
5770    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550006,
5771    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
5772    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
5773    0x80040000, 0x80000000, 0xa0000007, 0x04000004, 0x80010001, 0x80000000,
5774    0xa0550007, 0xa0aa0007, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550007,
5775    0xa0aa0007, 0x02000001, 0x80020002, 0xa0ff0007, 0x02000001, 0x80020001,
5776    0xa0ff0007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042,
5777    0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000,
5778    0xa0e40800, 0x04000012, 0x800f0004, 0x80550000, 0x80e40002, 0x80e40001,
5779    0x03000005, 0x800f0000, 0x80ff0003, 0x80e40004, 0x03000005, 0x800f0000,
5780    0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
5781};
5782#if 0
5783//
5784// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
5785//
5786//   fxc /T ps_2_0 /Vn radial16 /Fh tmp.h tmp.hlsl
5787//
5788//
5789// Parameters:
5790//
5791//   sampler2D colors;
5792//   float2 fractions[4];
5793//   float3 m0;
5794//   float3 m1;
5795//   float3 precalc;
5796//
5797//
5798// Registers:
5799//
5800//   Name         Reg   Size
5801//   ------------ ----- ----
5802//   fractions    c0       3
5803//   m0           c16      1
5804//   m1           c17      1
5805//   precalc      c18      1
5806//   colors       s0       1
5807//
5808
5809    ps_2_0
5810    def c3, 1, 0, 0.5, -1
5811    def c4, 1, 0.5, 0.0625, 0.03125
5812    def c5, 0.416667014, 1.05499995, -0.0549999997, 0
5813    dcl t0.xy
5814    dcl v0
5815    dcl_2d s0
5816    mov r0.z, c3.x
5817    mov r0.xy, t0
5818    dp3 r0.w, r0, c17
5819    mul r0.w, r0.w, r0.w
5820    mul r0.w, r0.w, c18.y
5821    dp3 r0.x, r0, c16
5822    add r0.x, r0.x, -c18.x
5823    mad r0.y, r0.x, r0.x, r0.w
5824    rsq r0.y, r0.y
5825    rcp r0.y, r0.y
5826    mad r0.x, c18.x, r0.x, r0.y
5827    mov r0.z, c18.z
5828    mad r0.y, r0.x, r0.z, -c0.x
5829    mul_sat r0.y, r0.y, c0.y
5830    mad r0.w, r0.x, r0.z, -c1.x
5831    mul_sat r0.w, r0.w, c1.y
5832    add r0.y, r0.y, r0.w
5833    mad r0.w, r0.x, r0.z, -c2.x
5834    mul_sat r0.w, r0.w, c2.y
5835    add r0.y, r0.y, r0.w
5836    frc r0.w, r0.y
5837    add r0.y, r0.y, -r0.w
5838    add r1.w, r0.y, c3.x
5839    mad r1.x, r1.w, c4.z, c4.w
5840    mul r1.z, r0.x, c18.z
5841    mad r1.w, r0.x, r0.z, c3.w
5842    mad r0.x, r0.y, c4.z, c4.w
5843    mov r0.y, c3.z
5844    mov r1.y, c3.z
5845    mov r2.xy, c4
5846    mov r3.xy, c3.yzxw
5847    texld r4, r0, s0
5848    texld r5, r1, s0
5849    texld r2, r2, s0
5850    texld r3, r3, s0
5851    lrp r6, r0.w, r5, r4
5852    cmp r0, r1.w, r2, r6
5853    cmp r0, -r1.z, r3, r0
5854    log r1.x, r0.x
5855    log r1.y, r0.y
5856    log r1.z, r0.z
5857    mul r1.xyz, r1, c5.x
5858    exp r2.x, r1.x
5859    exp r2.y, r1.y
5860    exp r2.z, r1.z
5861    mad r0.xyz, r2, c5.y, c5.z
5862    mul r0, r0, v0
5863    mov oC0, r0
5864
5865// approximately 48 instruction slots used (4 texture, 44 arithmetic)
5866#endif
5867
5868const DWORD radial16[] =
5869{
5870    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
5871    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
5872    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020003,
5873    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
5874    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
5875    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
5876    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
5877    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000,
5878    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
5879    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
5880    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
5881    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0003,
5882    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0004,
5883    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x05000051, 0xa00f0005,
5884    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
5885    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
5886    0xa00f0800, 0x02000001, 0x80040000, 0xa0000003, 0x02000001, 0x80030000,
5887    0xb0e40000, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000005,
5888    0x80080000, 0x80ff0000, 0x80ff0000, 0x03000005, 0x80080000, 0x80ff0000,
5889    0xa0550012, 0x03000008, 0x80010000, 0x80e40000, 0xa0e40010, 0x03000002,
5890    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
5891    0x80000000, 0x80ff0000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
5892    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
5893    0x80550000, 0x02000001, 0x80040000, 0xa0aa0012, 0x04000004, 0x80020000,
5894    0x80000000, 0x80aa0000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
5895    0xa0550000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000001,
5896    0x03000005, 0x80180000, 0x80ff0000, 0xa0550001, 0x03000002, 0x80020000,
5897    0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000,
5898    0xa1000002, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550002, 0x03000002,
5899    0x80020000, 0x80550000, 0x80ff0000, 0x02000013, 0x80080000, 0x80550000,
5900    0x03000002, 0x80020000, 0x80550000, 0x81ff0000, 0x03000002, 0x80080001,
5901    0x80550000, 0xa0000003, 0x04000004, 0x80010001, 0x80ff0001, 0xa0aa0004,
5902    0xa0ff0004, 0x03000005, 0x80040001, 0x80000000, 0xa0aa0012, 0x04000004,
5903    0x80080001, 0x80000000, 0x80aa0000, 0xa0ff0003, 0x04000004, 0x80010000,
5904    0x80550000, 0xa0aa0004, 0xa0ff0004, 0x02000001, 0x80020000, 0xa0aa0003,
5905    0x02000001, 0x80020001, 0xa0aa0003, 0x02000001, 0x80030002, 0xa0e40004,
5906    0x02000001, 0x80030003, 0xa0c90003, 0x03000042, 0x800f0004, 0x80e40000,
5907    0xa0e40800, 0x03000042, 0x800f0005, 0x80e40001, 0xa0e40800, 0x03000042,
5908    0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042, 0x800f0003, 0x80e40003,
5909    0xa0e40800, 0x04000012, 0x800f0006, 0x80ff0000, 0x80e40005, 0x80e40004,
5910    0x04000058, 0x800f0000, 0x80ff0001, 0x80e40002, 0x80e40006, 0x04000058,
5911    0x800f0000, 0x81aa0001, 0x80e40003, 0x80e40000, 0x0200000f, 0x80010001,
5912    0x80000000, 0x0200000f, 0x80020001, 0x80550000, 0x0200000f, 0x80040001,
5913    0x80aa0000, 0x03000005, 0x80070001, 0x80e40001, 0xa0000005, 0x0200000e,
5914    0x80010002, 0x80000001, 0x0200000e, 0x80020002, 0x80550001, 0x0200000e,
5915    0x80040002, 0x80aa0001, 0x04000004, 0x80070000, 0x80e40002, 0xa0550005,
5916    0xa0aa0005, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000, 0x02000001,
5917    0x800f0800, 0x80e40000, 0x0000ffff
5918};
5919#if 0
5920//
5921// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
5922//
5923//   fxc /T ps_2_0 /Vn radial17 /Fh tmp.h tmp.hlsl
5924//
5925//
5926// Parameters:
5927//
5928//   sampler2D colors;
5929//   float2 fractions[4];
5930//   float3 m0;
5931//   float3 m1;
5932//   float3 precalc;
5933//
5934//
5935// Registers:
5936//
5937//   Name         Reg   Size
5938//   ------------ ----- ----
5939//   fractions    c0       3
5940//   m0           c16      1
5941//   m1           c17      1
5942//   precalc      c18      1
5943//   colors       s0       1
5944//
5945
5946    ps_2_0
5947    def c3, 1, 0.5, -0.5, 2
5948    def c4, 0.0625, 0.03125, 0.416667014, 0
5949    def c5, 1.05499995, -0.0549999997, 0, 0
5950    dcl t0.xy
5951    dcl v0
5952    dcl_2d s0
5953    mov r0.xy, t0
5954    mov r0.z, c3.x
5955    dp3 r0.w, r0, c17
5956    dp3 r0.x, r0, c16
5957    mul r0.y, r0.w, r0.w
5958    mul r0.y, r0.y, c18.y
5959    add r0.x, r0.x, -c18.x
5960    mad r0.y, r0.x, r0.x, r0.y
5961    rsq r0.y, r0.y
5962    rcp r0.y, r0.y
5963    mad r0.x, c18.x, r0.x, r0.y
5964    mul r0.x, r0.x, c18.z
5965    mul r0.x, r0.x, c3.y
5966    frc r0.x, r0.x
5967    add r0.x, r0.x, c3.z
5968    abs r0.x, r0.x
5969    mad r0.x, r0.x, -c3.w, c3.x
5970    add r0.y, r0.x, -c0.x
5971    mul_sat r0.y, r0.y, c0.y
5972    add r0.z, r0.x, -c1.x
5973    add r0.x, r0.x, -c2.x
5974    mul_sat r0.z, r0.z, c1.y
5975    add r0.y, r0.y, r0.z
5976    mul_sat r0.x, r0.x, c2.y
5977    add r0.x, r0.y, r0.x
5978    frc r0.y, r0.x
5979    add r0.x, r0.x, -r0.y
5980    add r0.z, r0.x, c3.x
5981    mad r1.x, r0.x, c4.x, c4.y
5982    mad r2.x, r0.z, c4.x, c4.y
5983    mov r2.y, c3.y
5984    mov r1.y, c3.y
5985    texld r2, r2, s0
5986    texld r1, r1, s0
5987    lrp r3, r0.y, r2, r1
5988    log r0.x, r3.x
5989    log r0.y, r3.y
5990    log r0.z, r3.z
5991    mul r0.xyz, r0, c4.z
5992    exp r1.x, r0.x
5993    exp r1.y, r0.y
5994    exp r1.z, r0.z
5995    mad r3.xyz, r1, c5.x, c5.y
5996    mul r0, r3, v0
5997    mov oC0, r0
5998
5999// approximately 45 instruction slots used (2 texture, 43 arithmetic)
6000#endif
6001
6002const DWORD radial17[] =
6003{
6004    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
6005    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
6006    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020003,
6007    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
6008    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
6009    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
6010    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
6011    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000,
6012    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
6013    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
6014    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
6015    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0003,
6016    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0004,
6017    0x3d800000, 0x3d000000, 0x3ed55561, 0x00000000, 0x05000051, 0xa00f0005,
6018    0x3f870a3d, 0xbd6147ae, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
6019    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
6020    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
6021    0xa0000003, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
6022    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
6023    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
6024    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
6025    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
6026    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
6027    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x03000005,
6028    0x80010000, 0x80000000, 0xa0550003, 0x02000013, 0x80010000, 0x80000000,
6029    0x03000002, 0x80010000, 0x80000000, 0xa0aa0003, 0x02000023, 0x80010000,
6030    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0003, 0xa0000003,
6031    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
6032    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
6033    0x03000002, 0x80010000, 0x80000000, 0xa1000002, 0x03000005, 0x80140000,
6034    0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
6035    0x03000005, 0x80110000, 0x80000000, 0xa0550002, 0x03000002, 0x80010000,
6036    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
6037    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
6038    0xa0000003, 0x04000004, 0x80010001, 0x80000000, 0xa0000004, 0xa0550004,
6039    0x04000004, 0x80010002, 0x80aa0000, 0xa0000004, 0xa0550004, 0x02000001,
6040    0x80020002, 0xa0550003, 0x02000001, 0x80020001, 0xa0550003, 0x03000042,
6041    0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042, 0x800f0001, 0x80e40001,
6042    0xa0e40800, 0x04000012, 0x800f0003, 0x80550000, 0x80e40002, 0x80e40001,
6043    0x0200000f, 0x80010000, 0x80000003, 0x0200000f, 0x80020000, 0x80550003,
6044    0x0200000f, 0x80040000, 0x80aa0003, 0x03000005, 0x80070000, 0x80e40000,
6045    0xa0aa0004, 0x0200000e, 0x80010001, 0x80000000, 0x0200000e, 0x80020001,
6046    0x80550000, 0x0200000e, 0x80040001, 0x80aa0000, 0x04000004, 0x80070003,
6047    0x80e40001, 0xa0000005, 0xa0550005, 0x03000005, 0x800f0000, 0x80e40003,
6048    0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
6049};
6050#if 0
6051//
6052// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
6053//
6054//   fxc /T ps_2_0 /Vn radial18 /Fh tmp.h tmp.hlsl
6055//
6056//
6057// Parameters:
6058//
6059//   sampler2D colors;
6060//   float2 fractions[4];
6061//   float3 m0;
6062//   float3 m1;
6063//   float3 precalc;
6064//
6065//
6066// Registers:
6067//
6068//   Name         Reg   Size
6069//   ------------ ----- ----
6070//   fractions    c0       3
6071//   m0           c16      1
6072//   m1           c17      1
6073//   precalc      c18      1
6074//   colors       s0       1
6075//
6076
6077    ps_2_0
6078    def c3, 1, 0.0625, 0.03125, 0.5
6079    def c4, 0.416667014, 1.05499995, -0.0549999997, 0
6080    dcl t0.xy
6081    dcl v0
6082    dcl_2d s0
6083    mov r0.xy, t0
6084    mov r0.z, c3.x
6085    dp3 r0.w, r0, c17
6086    dp3 r0.x, r0, c16
6087    mul r0.y, r0.w, r0.w
6088    mul r0.y, r0.y, c18.y
6089    add r0.x, r0.x, -c18.x
6090    mad r0.y, r0.x, r0.x, r0.y
6091    rsq r0.y, r0.y
6092    rcp r0.y, r0.y
6093    mad r0.x, c18.x, r0.x, r0.y
6094    mul r0.x, r0.x, c18.z
6095    frc r0.x, r0.x
6096    add r0.y, r0.x, -c0.x
6097    mul_sat r0.y, r0.y, c0.y
6098    add r0.z, r0.x, -c1.x
6099    add r0.x, r0.x, -c2.x
6100    mul_sat r0.z, r0.z, c1.y
6101    add r0.y, r0.y, r0.z
6102    mul_sat r0.x, r0.x, c2.y
6103    add r0.x, r0.y, r0.x
6104    frc r0.y, r0.x
6105    add r0.x, r0.x, -r0.y
6106    add r0.z, r0.x, c3.x
6107    mad r1.x, r0.x, c3.y, c3.z
6108    mad r2.x, r0.z, c3.y, c3.z
6109    mov r2.y, c3.w
6110    mov r1.y, c3.w
6111    texld r2, r2, s0
6112    texld r1, r1, s0
6113    lrp r3, r0.y, r2, r1
6114    log r0.x, r3.x
6115    log r0.y, r3.y
6116    log r0.z, r3.z
6117    mul r0.xyz, r0, c4.x
6118    exp r1.x, r0.x
6119    exp r1.y, r0.y
6120    exp r1.z, r0.z
6121    mad r3.xyz, r1, c4.y, c4.z
6122    mul r0, r3, v0
6123    mov oC0, r0
6124
6125// approximately 41 instruction slots used (2 texture, 39 arithmetic)
6126#endif
6127
6128const DWORD radial18[] =
6129{
6130    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
6131    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
6132    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020003,
6133    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
6134    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
6135    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
6136    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
6137    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000,
6138    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
6139    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
6140    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
6141    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0003,
6142    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x05000051, 0xa00f0004,
6143    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
6144    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
6145    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
6146    0xa0000003, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
6147    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
6148    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
6149    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
6150    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
6151    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
6152    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x02000013,
6153    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
6154    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
6155    0x80000000, 0xa1000001, 0x03000002, 0x80010000, 0x80000000, 0xa1000002,
6156    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
6157    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550002,
6158    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
6159    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
6160    0x80040000, 0x80000000, 0xa0000003, 0x04000004, 0x80010001, 0x80000000,
6161    0xa0550003, 0xa0aa0003, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550003,
6162    0xa0aa0003, 0x02000001, 0x80020002, 0xa0ff0003, 0x02000001, 0x80020001,
6163    0xa0ff0003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042,
6164    0x800f0001, 0x80e40001, 0xa0e40800, 0x04000012, 0x800f0003, 0x80550000,
6165    0x80e40002, 0x80e40001, 0x0200000f, 0x80010000, 0x80000003, 0x0200000f,
6166    0x80020000, 0x80550003, 0x0200000f, 0x80040000, 0x80aa0003, 0x03000005,
6167    0x80070000, 0x80e40000, 0xa0000004, 0x0200000e, 0x80010001, 0x80000000,
6168    0x0200000e, 0x80020001, 0x80550000, 0x0200000e, 0x80040001, 0x80aa0000,
6169    0x04000004, 0x80070003, 0x80e40001, 0xa0550004, 0xa0aa0004, 0x03000005,
6170    0x800f0000, 0x80e40003, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
6171    0x0000ffff
6172};
6173#if 0
6174//
6175// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
6176//
6177//   fxc /T ps_2_0 /Vn radial20 /Fh tmp.h tmp.hlsl
6178//
6179//
6180// Parameters:
6181//
6182//   sampler2D colors;
6183//   float2 fractions[8];
6184//   float3 m0;
6185//   float3 m1;
6186//   float3 precalc;
6187//
6188//
6189// Registers:
6190//
6191//   Name         Reg   Size
6192//   ------------ ----- ----
6193//   fractions    c0       7
6194//   m0           c16      1
6195//   m1           c17      1
6196//   precalc      c18      1
6197//   colors       s0       1
6198//
6199
6200    ps_2_0
6201    def c7, 1, 0, 0.5, -1
6202    def c8, 1, 0.5, 0.0625, 0.03125
6203    def c9, 0.416667014, 1.05499995, -0.0549999997, 0
6204    dcl t0.xy
6205    dcl v0
6206    dcl_2d s0
6207    mov r0.z, c7.x
6208    mov r0.xy, t0
6209    dp3 r0.w, r0, c17
6210    mul r0.w, r0.w, r0.w
6211    mul r0.w, r0.w, c18.y
6212    dp3 r0.x, r0, c16
6213    add r0.x, r0.x, -c18.x
6214    mad r0.y, r0.x, r0.x, r0.w
6215    rsq r0.y, r0.y
6216    rcp r0.y, r0.y
6217    mad r0.x, c18.x, r0.x, r0.y
6218    mov r0.z, c18.z
6219    mad r0.y, r0.x, r0.z, -c0.x
6220    mul_sat r0.y, r0.y, c0.y
6221    mad r0.w, r0.x, r0.z, -c1.x
6222    mul_sat r0.w, r0.w, c1.y
6223    add r0.y, r0.y, r0.w
6224    mad r0.w, r0.x, r0.z, -c2.x
6225    mul_sat r0.w, r0.w, c2.y
6226    add r0.y, r0.y, r0.w
6227    mad r0.w, r0.x, r0.z, -c3.x
6228    mul_sat r0.w, r0.w, c3.y
6229    add r0.y, r0.y, r0.w
6230    mad r0.w, r0.x, r0.z, -c4.x
6231    mul_sat r0.w, r0.w, c4.y
6232    add r0.y, r0.y, r0.w
6233    mad r0.w, r0.x, r0.z, -c5.x
6234    mul_sat r0.w, r0.w, c5.y
6235    add r0.y, r0.y, r0.w
6236    mad r0.w, r0.x, r0.z, -c6.x
6237    mul_sat r0.w, r0.w, c6.y
6238    add r0.y, r0.y, r0.w
6239    frc r0.w, r0.y
6240    add r0.y, r0.y, -r0.w
6241    add r1.w, r0.y, c7.x
6242    mad r1.x, r1.w, c8.z, c8.w
6243    mul r1.z, r0.x, c18.z
6244    mad r1.w, r0.x, r0.z, c7.w
6245    mad r0.x, r0.y, c8.z, c8.w
6246    mov r0.y, c7.z
6247    mov r1.y, c7.z
6248    mov r2.xy, c8
6249    mov r3.xy, c7.yzxw
6250    texld r4, r0, s0
6251    texld r5, r1, s0
6252    texld r2, r2, s0
6253    texld r3, r3, s0
6254    lrp r6, r0.w, r5, r4
6255    cmp r0, r1.w, r2, r6
6256    cmp r0, -r1.z, r3, r0
6257    log r1.x, r0.x
6258    log r1.y, r0.y
6259    log r1.z, r0.z
6260    mul r1.xyz, r1, c9.x
6261    exp r2.x, r1.x
6262    exp r2.y, r1.y
6263    exp r2.z, r1.z
6264    mad r0.xyz, r2, c9.y, c9.z
6265    mul r0, r0, v0
6266    mov oC0, r0
6267
6268// approximately 60 instruction slots used (4 texture, 56 arithmetic)
6269#endif
6270
6271const DWORD radial20[] =
6272{
6273    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
6274    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
6275    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020007,
6276    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
6277    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
6278    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
6279    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
6280    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000,
6281    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
6282    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
6283    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
6284    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0007,
6285    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0008,
6286    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x05000051, 0xa00f0009,
6287    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
6288    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
6289    0xa00f0800, 0x02000001, 0x80040000, 0xa0000007, 0x02000001, 0x80030000,
6290    0xb0e40000, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000005,
6291    0x80080000, 0x80ff0000, 0x80ff0000, 0x03000005, 0x80080000, 0x80ff0000,
6292    0xa0550012, 0x03000008, 0x80010000, 0x80e40000, 0xa0e40010, 0x03000002,
6293    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
6294    0x80000000, 0x80ff0000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
6295    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
6296    0x80550000, 0x02000001, 0x80040000, 0xa0aa0012, 0x04000004, 0x80020000,
6297    0x80000000, 0x80aa0000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
6298    0xa0550000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000001,
6299    0x03000005, 0x80180000, 0x80ff0000, 0xa0550001, 0x03000002, 0x80020000,
6300    0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000,
6301    0xa1000002, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550002, 0x03000002,
6302    0x80020000, 0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000,
6303    0x80aa0000, 0xa1000003, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550003,
6304    0x03000002, 0x80020000, 0x80550000, 0x80ff0000, 0x04000004, 0x80080000,
6305    0x80000000, 0x80aa0000, 0xa1000004, 0x03000005, 0x80180000, 0x80ff0000,
6306    0xa0550004, 0x03000002, 0x80020000, 0x80550000, 0x80ff0000, 0x04000004,
6307    0x80080000, 0x80000000, 0x80aa0000, 0xa1000005, 0x03000005, 0x80180000,
6308    0x80ff0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80ff0000,
6309    0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000006, 0x03000005,
6310    0x80180000, 0x80ff0000, 0xa0550006, 0x03000002, 0x80020000, 0x80550000,
6311    0x80ff0000, 0x02000013, 0x80080000, 0x80550000, 0x03000002, 0x80020000,
6312    0x80550000, 0x81ff0000, 0x03000002, 0x80080001, 0x80550000, 0xa0000007,
6313    0x04000004, 0x80010001, 0x80ff0001, 0xa0aa0008, 0xa0ff0008, 0x03000005,
6314    0x80040001, 0x80000000, 0xa0aa0012, 0x04000004, 0x80080001, 0x80000000,
6315    0x80aa0000, 0xa0ff0007, 0x04000004, 0x80010000, 0x80550000, 0xa0aa0008,
6316    0xa0ff0008, 0x02000001, 0x80020000, 0xa0aa0007, 0x02000001, 0x80020001,
6317    0xa0aa0007, 0x02000001, 0x80030002, 0xa0e40008, 0x02000001, 0x80030003,
6318    0xa0c90007, 0x03000042, 0x800f0004, 0x80e40000, 0xa0e40800, 0x03000042,
6319    0x800f0005, 0x80e40001, 0xa0e40800, 0x03000042, 0x800f0002, 0x80e40002,
6320    0xa0e40800, 0x03000042, 0x800f0003, 0x80e40003, 0xa0e40800, 0x04000012,
6321    0x800f0006, 0x80ff0000, 0x80e40005, 0x80e40004, 0x04000058, 0x800f0000,
6322    0x80ff0001, 0x80e40002, 0x80e40006, 0x04000058, 0x800f0000, 0x81aa0001,
6323    0x80e40003, 0x80e40000, 0x0200000f, 0x80010001, 0x80000000, 0x0200000f,
6324    0x80020001, 0x80550000, 0x0200000f, 0x80040001, 0x80aa0000, 0x03000005,
6325    0x80070001, 0x80e40001, 0xa0000009, 0x0200000e, 0x80010002, 0x80000001,
6326    0x0200000e, 0x80020002, 0x80550001, 0x0200000e, 0x80040002, 0x80aa0001,
6327    0x04000004, 0x80070000, 0x80e40002, 0xa0550009, 0xa0aa0009, 0x03000005,
6328    0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
6329    0x0000ffff
6330};
6331#if 0
6332//
6333// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
6334//
6335//   fxc /T ps_2_0 /Vn radial21 /Fh tmp.h tmp.hlsl
6336//
6337//
6338// Parameters:
6339//
6340//   sampler2D colors;
6341//   float2 fractions[8];
6342//   float3 m0;
6343//   float3 m1;
6344//   float3 precalc;
6345//
6346//
6347// Registers:
6348//
6349//   Name         Reg   Size
6350//   ------------ ----- ----
6351//   fractions    c0       7
6352//   m0           c16      1
6353//   m1           c17      1
6354//   precalc      c18      1
6355//   colors       s0       1
6356//
6357
6358    ps_2_0
6359    def c7, 1, 0.5, -0.5, 2
6360    def c8, 0.0625, 0.03125, 0.416667014, 0
6361    def c9, 1.05499995, -0.0549999997, 0, 0
6362    dcl t0.xy
6363    dcl v0
6364    dcl_2d s0
6365    mov r0.xy, t0
6366    mov r0.z, c7.x
6367    dp3 r0.w, r0, c17
6368    dp3 r0.x, r0, c16
6369    mul r0.y, r0.w, r0.w
6370    mul r0.y, r0.y, c18.y
6371    add r0.x, r0.x, -c18.x
6372    mad r0.y, r0.x, r0.x, r0.y
6373    rsq r0.y, r0.y
6374    rcp r0.y, r0.y
6375    mad r0.x, c18.x, r0.x, r0.y
6376    mul r0.x, r0.x, c18.z
6377    mul r0.x, r0.x, c7.y
6378    frc r0.x, r0.x
6379    add r0.x, r0.x, c7.z
6380    abs r0.x, r0.x
6381    mad r0.x, r0.x, -c7.w, c7.x
6382    add r0.y, r0.x, -c0.x
6383    mul_sat r0.y, r0.y, c0.y
6384    add r0.z, r0.x, -c1.x
6385    mul_sat r0.z, r0.z, c1.y
6386    add r0.y, r0.y, r0.z
6387    add r0.z, r0.x, -c2.x
6388    mul_sat r0.z, r0.z, c2.y
6389    add r0.y, r0.y, r0.z
6390    add r0.z, r0.x, -c3.x
6391    mul_sat r0.z, r0.z, c3.y
6392    add r0.y, r0.y, r0.z
6393    add r0.z, r0.x, -c4.x
6394    mul_sat r0.z, r0.z, c4.y
6395    add r0.y, r0.y, r0.z
6396    add r0.z, r0.x, -c5.x
6397    add r0.x, r0.x, -c6.x
6398    mul_sat r0.z, r0.z, c5.y
6399    add r0.y, r0.y, r0.z
6400    mul_sat r0.x, r0.x, c6.y
6401    add r0.x, r0.y, r0.x
6402    frc r0.y, r0.x
6403    add r0.x, r0.x, -r0.y
6404    add r0.z, r0.x, c7.x
6405    mad r1.x, r0.x, c8.x, c8.y
6406    mad r2.x, r0.z, c8.x, c8.y
6407    mov r2.y, c7.y
6408    mov r1.y, c7.y
6409    texld r2, r2, s0
6410    texld r1, r1, s0
6411    lrp r3, r0.y, r2, r1
6412    log r0.x, r3.x
6413    log r0.y, r3.y
6414    log r0.z, r3.z
6415    mul r0.xyz, r0, c8.z
6416    exp r1.x, r0.x
6417    exp r1.y, r0.y
6418    exp r1.z, r0.z
6419    mad r3.xyz, r1, c9.x, c9.y
6420    mul r0, r3, v0
6421    mov oC0, r0
6422
6423// approximately 57 instruction slots used (2 texture, 55 arithmetic)
6424#endif
6425
6426const DWORD radial21[] =
6427{
6428    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
6429    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
6430    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020007,
6431    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
6432    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
6433    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
6434    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
6435    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000,
6436    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
6437    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
6438    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
6439    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0007,
6440    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0008,
6441    0x3d800000, 0x3d000000, 0x3ed55561, 0x00000000, 0x05000051, 0xa00f0009,
6442    0x3f870a3d, 0xbd6147ae, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
6443    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
6444    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
6445    0xa0000007, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
6446    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
6447    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
6448    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
6449    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
6450    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
6451    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x03000005,
6452    0x80010000, 0x80000000, 0xa0550007, 0x02000013, 0x80010000, 0x80000000,
6453    0x03000002, 0x80010000, 0x80000000, 0xa0aa0007, 0x02000023, 0x80010000,
6454    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0007, 0xa0000007,
6455    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
6456    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
6457    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
6458    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002,
6459    0x03000005, 0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000,
6460    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003,
6461    0x03000005, 0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000,
6462    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004,
6463    0x03000005, 0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000,
6464    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005,
6465    0x03000002, 0x80010000, 0x80000000, 0xa1000006, 0x03000005, 0x80140000,
6466    0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
6467    0x03000005, 0x80110000, 0x80000000, 0xa0550006, 0x03000002, 0x80010000,
6468    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
6469    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
6470    0xa0000007, 0x04000004, 0x80010001, 0x80000000, 0xa0000008, 0xa0550008,
6471    0x04000004, 0x80010002, 0x80aa0000, 0xa0000008, 0xa0550008, 0x02000001,
6472    0x80020002, 0xa0550007, 0x02000001, 0x80020001, 0xa0550007, 0x03000042,
6473    0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042, 0x800f0001, 0x80e40001,
6474    0xa0e40800, 0x04000012, 0x800f0003, 0x80550000, 0x80e40002, 0x80e40001,
6475    0x0200000f, 0x80010000, 0x80000003, 0x0200000f, 0x80020000, 0x80550003,
6476    0x0200000f, 0x80040000, 0x80aa0003, 0x03000005, 0x80070000, 0x80e40000,
6477    0xa0aa0008, 0x0200000e, 0x80010001, 0x80000000, 0x0200000e, 0x80020001,
6478    0x80550000, 0x0200000e, 0x80040001, 0x80aa0000, 0x04000004, 0x80070003,
6479    0x80e40001, 0xa0000009, 0xa0550009, 0x03000005, 0x800f0000, 0x80e40003,
6480    0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
6481};
6482#if 0
6483//
6484// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
6485//
6486//   fxc /T ps_2_0 /Vn radial22 /Fh tmp.h tmp.hlsl
6487//
6488//
6489// Parameters:
6490//
6491//   sampler2D colors;
6492//   float2 fractions[8];
6493//   float3 m0;
6494//   float3 m1;
6495//   float3 precalc;
6496//
6497//
6498// Registers:
6499//
6500//   Name         Reg   Size
6501//   ------------ ----- ----
6502//   fractions    c0       7
6503//   m0           c16      1
6504//   m1           c17      1
6505//   precalc      c18      1
6506//   colors       s0       1
6507//
6508
6509    ps_2_0
6510    def c7, 1, 0.0625, 0.03125, 0.5
6511    def c8, 0.416667014, 1.05499995, -0.0549999997, 0
6512    dcl t0.xy
6513    dcl v0
6514    dcl_2d s0
6515    mov r0.xy, t0
6516    mov r0.z, c7.x
6517    dp3 r0.w, r0, c17
6518    dp3 r0.x, r0, c16
6519    mul r0.y, r0.w, r0.w
6520    mul r0.y, r0.y, c18.y
6521    add r0.x, r0.x, -c18.x
6522    mad r0.y, r0.x, r0.x, r0.y
6523    rsq r0.y, r0.y
6524    rcp r0.y, r0.y
6525    mad r0.x, c18.x, r0.x, r0.y
6526    mul r0.x, r0.x, c18.z
6527    frc r0.x, r0.x
6528    add r0.y, r0.x, -c0.x
6529    mul_sat r0.y, r0.y, c0.y
6530    add r0.z, r0.x, -c1.x
6531    mul_sat r0.z, r0.z, c1.y
6532    add r0.y, r0.y, r0.z
6533    add r0.z, r0.x, -c2.x
6534    mul_sat r0.z, r0.z, c2.y
6535    add r0.y, r0.y, r0.z
6536    add r0.z, r0.x, -c3.x
6537    mul_sat r0.z, r0.z, c3.y
6538    add r0.y, r0.y, r0.z
6539    add r0.z, r0.x, -c4.x
6540    mul_sat r0.z, r0.z, c4.y
6541    add r0.y, r0.y, r0.z
6542    add r0.z, r0.x, -c5.x
6543    add r0.x, r0.x, -c6.x
6544    mul_sat r0.z, r0.z, c5.y
6545    add r0.y, r0.y, r0.z
6546    mul_sat r0.x, r0.x, c6.y
6547    add r0.x, r0.y, r0.x
6548    frc r0.y, r0.x
6549    add r0.x, r0.x, -r0.y
6550    add r0.z, r0.x, c7.x
6551    mad r1.x, r0.x, c7.y, c7.z
6552    mad r2.x, r0.z, c7.y, c7.z
6553    mov r2.y, c7.w
6554    mov r1.y, c7.w
6555    texld r2, r2, s0
6556    texld r1, r1, s0
6557    lrp r3, r0.y, r2, r1
6558    log r0.x, r3.x
6559    log r0.y, r3.y
6560    log r0.z, r3.z
6561    mul r0.xyz, r0, c8.x
6562    exp r1.x, r0.x
6563    exp r1.y, r0.y
6564    exp r1.z, r0.z
6565    mad r3.xyz, r1, c8.y, c8.z
6566    mul r0, r3, v0
6567    mov oC0, r0
6568
6569// approximately 53 instruction slots used (2 texture, 51 arithmetic)
6570#endif
6571
6572const DWORD radial22[] =
6573{
6574    0xffff0200, 0x0044fffe, 0x42415443, 0x0000001c, 0x000000da, 0xffff0200,
6575    0x00000005, 0x0000001c, 0x20000100, 0x000000d3, 0x00000080, 0x00000003,
6576    0x00020001, 0x00000088, 0x00000000, 0x00000098, 0x00000002, 0x00020007,
6577    0x000000a4, 0x00000000, 0x000000b4, 0x00100002, 0x00420001, 0x000000b8,
6578    0x00000000, 0x000000c8, 0x00110002, 0x00460001, 0x000000b8, 0x00000000,
6579    0x000000cb, 0x00120002, 0x004a0001, 0x000000b8, 0x00000000, 0x6f6c6f63,
6580    0xab007372, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266,
6581    0x6e6f6974, 0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000,
6582    0xab00306d, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x7000316d,
6583    0x61636572, 0x7000636c, 0x5f325f73, 0x694d0030, 0x736f7263, 0x2074666f,
6584    0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69,
6585    0x312e3920, 0x34392e39, 0x31322e39, 0xab003131, 0x05000051, 0xa00f0007,
6586    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x05000051, 0xa00f0008,
6587    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
6588    0xb0030000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x90000000,
6589    0xa00f0800, 0x02000001, 0x80030000, 0xb0e40000, 0x02000001, 0x80040000,
6590    0xa0000007, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
6591    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
6592    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
6593    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
6594    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
6595    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
6596    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x02000013,
6597    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
6598    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
6599    0x80000000, 0xa1000001, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550001,
6600    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
6601    0x80000000, 0xa1000002, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550002,
6602    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
6603    0x80000000, 0xa1000003, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550003,
6604    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
6605    0x80000000, 0xa1000004, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550004,
6606    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
6607    0x80000000, 0xa1000005, 0x03000002, 0x80010000, 0x80000000, 0xa1000006,
6608    0x03000005, 0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000,
6609    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550006,
6610    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
6611    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
6612    0x80040000, 0x80000000, 0xa0000007, 0x04000004, 0x80010001, 0x80000000,
6613    0xa0550007, 0xa0aa0007, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550007,
6614    0xa0aa0007, 0x02000001, 0x80020002, 0xa0ff0007, 0x02000001, 0x80020001,
6615    0xa0ff0007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40800, 0x03000042,
6616    0x800f0001, 0x80e40001, 0xa0e40800, 0x04000012, 0x800f0003, 0x80550000,
6617    0x80e40002, 0x80e40001, 0x0200000f, 0x80010000, 0x80000003, 0x0200000f,
6618    0x80020000, 0x80550003, 0x0200000f, 0x80040000, 0x80aa0003, 0x03000005,
6619    0x80070000, 0x80e40000, 0xa0000008, 0x0200000e, 0x80010001, 0x80000000,
6620    0x0200000e, 0x80020001, 0x80550000, 0x0200000e, 0x80040001, 0x80aa0000,
6621    0x04000004, 0x80070003, 0x80e40001, 0xa0550008, 0xa0aa0008, 0x03000005,
6622    0x800f0000, 0x80e40003, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
6623    0x0000ffff
6624};
6625#if 0
6626//
6627// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
6628//
6629//   fxc /T ps_2_0 /Vn radial24 /Fh tmp.h tmp.hlsl
6630//
6631//
6632// Parameters:
6633//
6634//   sampler2D colors;
6635//   float2 fractions[4];
6636//   float3 m0;
6637//   float3 m1;
6638//   sampler2D mask;
6639//   float3 precalc;
6640//
6641//
6642// Registers:
6643//
6644//   Name         Reg   Size
6645//   ------------ ----- ----
6646//   fractions    c0       3
6647//   m0           c16      1
6648//   m1           c17      1
6649//   precalc      c18      1
6650//   mask         s0       1
6651//   colors       s1       1
6652//
6653
6654    ps_2_0
6655    def c3, 1, 0, 0.5, -1
6656    def c4, 1, 0.5, 0.0625, 0.03125
6657    def c5, 0.416667014, 1.05499995, -0.0549999997, 0
6658    dcl t0.xy
6659    dcl t1.xy
6660    dcl v0
6661    dcl_2d s0
6662    dcl_2d s1
6663    mov r0.z, c3.x
6664    mov r0.xy, t1
6665    dp3 r0.w, r0, c17
6666    mul r0.w, r0.w, r0.w
6667    mul r0.w, r0.w, c18.y
6668    dp3 r0.x, r0, c16
6669    add r0.x, r0.x, -c18.x
6670    mad r0.y, r0.x, r0.x, r0.w
6671    rsq r0.y, r0.y
6672    rcp r0.y, r0.y
6673    mad r0.x, c18.x, r0.x, r0.y
6674    mov r0.z, c18.z
6675    mad r0.y, r0.x, r0.z, -c0.x
6676    mul_sat r0.y, r0.y, c0.y
6677    mad r0.w, r0.x, r0.z, -c1.x
6678    mul_sat r0.w, r0.w, c1.y
6679    add r0.y, r0.y, r0.w
6680    mad r0.w, r0.x, r0.z, -c2.x
6681    mul_sat r0.w, r0.w, c2.y
6682    add r0.y, r0.y, r0.w
6683    frc r0.w, r0.y
6684    add r0.y, r0.y, -r0.w
6685    add r1.w, r0.y, c3.x
6686    mad r1.x, r1.w, c4.z, c4.w
6687    mul r1.z, r0.x, c18.z
6688    mad r1.w, r0.x, r0.z, c3.w
6689    mad r0.x, r0.y, c4.z, c4.w
6690    mov r0.y, c3.z
6691    mov r1.y, c3.z
6692    mov r2.xy, c4
6693    mov r3.xy, c3.yzxw
6694    texld r4, r0, s1
6695    texld r5, r1, s1
6696    texld r2, r2, s1
6697    texld r3, r3, s1
6698    texld r6, t0, s0
6699    lrp r7, r0.w, r5, r4
6700    cmp r0, r1.w, r2, r7
6701    cmp r0, -r1.z, r3, r0
6702    log r1.x, r0.x
6703    log r1.y, r0.y
6704    log r1.z, r0.z
6705    mul r1.xyz, r1, c5.x
6706    exp r2.x, r1.x
6707    exp r2.y, r1.y
6708    exp r2.z, r1.z
6709    mad r0.xyz, r2, c5.y, c5.z
6710    mul r0, r6.w, r0
6711    mul r0, r0, v0
6712    mov oC0, r0
6713
6714// approximately 50 instruction slots used (5 texture, 45 arithmetic)
6715#endif
6716
6717const DWORD radial24[] =
6718{
6719    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
6720    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
6721    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020003,
6722    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
6723    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
6724    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
6725    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
6726    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
6727    0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000, 0xab00306d,
6728    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
6729    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
6730    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
6731    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
6732    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0004,
6733    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x05000051, 0xa00f0005,
6734    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
6735    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
6736    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
6737    0xa00f0801, 0x02000001, 0x80040000, 0xa0000003, 0x02000001, 0x80030000,
6738    0xb0e40001, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000005,
6739    0x80080000, 0x80ff0000, 0x80ff0000, 0x03000005, 0x80080000, 0x80ff0000,
6740    0xa0550012, 0x03000008, 0x80010000, 0x80e40000, 0xa0e40010, 0x03000002,
6741    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
6742    0x80000000, 0x80ff0000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
6743    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
6744    0x80550000, 0x02000001, 0x80040000, 0xa0aa0012, 0x04000004, 0x80020000,
6745    0x80000000, 0x80aa0000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
6746    0xa0550000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000001,
6747    0x03000005, 0x80180000, 0x80ff0000, 0xa0550001, 0x03000002, 0x80020000,
6748    0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000,
6749    0xa1000002, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550002, 0x03000002,
6750    0x80020000, 0x80550000, 0x80ff0000, 0x02000013, 0x80080000, 0x80550000,
6751    0x03000002, 0x80020000, 0x80550000, 0x81ff0000, 0x03000002, 0x80080001,
6752    0x80550000, 0xa0000003, 0x04000004, 0x80010001, 0x80ff0001, 0xa0aa0004,
6753    0xa0ff0004, 0x03000005, 0x80040001, 0x80000000, 0xa0aa0012, 0x04000004,
6754    0x80080001, 0x80000000, 0x80aa0000, 0xa0ff0003, 0x04000004, 0x80010000,
6755    0x80550000, 0xa0aa0004, 0xa0ff0004, 0x02000001, 0x80020000, 0xa0aa0003,
6756    0x02000001, 0x80020001, 0xa0aa0003, 0x02000001, 0x80030002, 0xa0e40004,
6757    0x02000001, 0x80030003, 0xa0c90003, 0x03000042, 0x800f0004, 0x80e40000,
6758    0xa0e40801, 0x03000042, 0x800f0005, 0x80e40001, 0xa0e40801, 0x03000042,
6759    0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0003, 0x80e40003,
6760    0xa0e40801, 0x03000042, 0x800f0006, 0xb0e40000, 0xa0e40800, 0x04000012,
6761    0x800f0007, 0x80ff0000, 0x80e40005, 0x80e40004, 0x04000058, 0x800f0000,
6762    0x80ff0001, 0x80e40002, 0x80e40007, 0x04000058, 0x800f0000, 0x81aa0001,
6763    0x80e40003, 0x80e40000, 0x0200000f, 0x80010001, 0x80000000, 0x0200000f,
6764    0x80020001, 0x80550000, 0x0200000f, 0x80040001, 0x80aa0000, 0x03000005,
6765    0x80070001, 0x80e40001, 0xa0000005, 0x0200000e, 0x80010002, 0x80000001,
6766    0x0200000e, 0x80020002, 0x80550001, 0x0200000e, 0x80040002, 0x80aa0001,
6767    0x04000004, 0x80070000, 0x80e40002, 0xa0550005, 0xa0aa0005, 0x03000005,
6768    0x800f0000, 0x80ff0006, 0x80e40000, 0x03000005, 0x800f0000, 0x80e40000,
6769    0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
6770};
6771#if 0
6772//
6773// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
6774//
6775//   fxc /T ps_2_0 /Vn radial25 /Fh tmp.h tmp.hlsl
6776//
6777//
6778// Parameters:
6779//
6780//   sampler2D colors;
6781//   float2 fractions[4];
6782//   float3 m0;
6783//   float3 m1;
6784//   sampler2D mask;
6785//   float3 precalc;
6786//
6787//
6788// Registers:
6789//
6790//   Name         Reg   Size
6791//   ------------ ----- ----
6792//   fractions    c0       3
6793//   m0           c16      1
6794//   m1           c17      1
6795//   precalc      c18      1
6796//   mask         s0       1
6797//   colors       s1       1
6798//
6799
6800    ps_2_0
6801    def c3, 1, 0.5, -0.5, 2
6802    def c4, 0.0625, 0.03125, 0.416667014, 0
6803    def c5, 1.05499995, -0.0549999997, 0, 0
6804    dcl t0.xy
6805    dcl t1.xy
6806    dcl v0
6807    dcl_2d s0
6808    dcl_2d s1
6809    mov r0.xy, t1
6810    mov r0.z, c3.x
6811    dp3 r0.w, r0, c17
6812    dp3 r0.x, r0, c16
6813    mul r0.y, r0.w, r0.w
6814    mul r0.y, r0.y, c18.y
6815    add r0.x, r0.x, -c18.x
6816    mad r0.y, r0.x, r0.x, r0.y
6817    rsq r0.y, r0.y
6818    rcp r0.y, r0.y
6819    mad r0.x, c18.x, r0.x, r0.y
6820    mul r0.x, r0.x, c18.z
6821    mul r0.x, r0.x, c3.y
6822    frc r0.x, r0.x
6823    add r0.x, r0.x, c3.z
6824    abs r0.x, r0.x
6825    mad r0.x, r0.x, -c3.w, c3.x
6826    add r0.y, r0.x, -c0.x
6827    mul_sat r0.y, r0.y, c0.y
6828    add r0.z, r0.x, -c1.x
6829    add r0.x, r0.x, -c2.x
6830    mul_sat r0.z, r0.z, c1.y
6831    add r0.y, r0.y, r0.z
6832    mul_sat r0.x, r0.x, c2.y
6833    add r0.x, r0.y, r0.x
6834    frc r0.y, r0.x
6835    add r0.x, r0.x, -r0.y
6836    add r0.z, r0.x, c3.x
6837    mad r1.x, r0.x, c4.x, c4.y
6838    mad r2.x, r0.z, c4.x, c4.y
6839    mov r2.y, c3.y
6840    mov r1.y, c3.y
6841    texld r2, r2, s1
6842    texld r1, r1, s1
6843    texld r3, t0, s0
6844    lrp r4, r0.y, r2, r1
6845    log r0.x, r4.x
6846    log r0.y, r4.y
6847    log r0.z, r4.z
6848    mul r0.xyz, r0, c4.z
6849    exp r1.x, r0.x
6850    exp r1.y, r0.y
6851    exp r1.z, r0.z
6852    mad r4.xyz, r1, c5.x, c5.y
6853    mul r0, r3.w, r4
6854    mul r0, r0, v0
6855    mov oC0, r0
6856
6857// approximately 47 instruction slots used (3 texture, 44 arithmetic)
6858#endif
6859
6860const DWORD radial25[] =
6861{
6862    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
6863    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
6864    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020003,
6865    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
6866    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
6867    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
6868    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
6869    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
6870    0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000, 0xab00306d,
6871    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
6872    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
6873    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
6874    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
6875    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0004,
6876    0x3d800000, 0x3d000000, 0x3ed55561, 0x00000000, 0x05000051, 0xa00f0005,
6877    0x3f870a3d, 0xbd6147ae, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
6878    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
6879    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
6880    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
6881    0xa0000003, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
6882    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
6883    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
6884    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
6885    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
6886    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
6887    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x03000005,
6888    0x80010000, 0x80000000, 0xa0550003, 0x02000013, 0x80010000, 0x80000000,
6889    0x03000002, 0x80010000, 0x80000000, 0xa0aa0003, 0x02000023, 0x80010000,
6890    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0003, 0xa0000003,
6891    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
6892    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
6893    0x03000002, 0x80010000, 0x80000000, 0xa1000002, 0x03000005, 0x80140000,
6894    0x80aa0000, 0xa0550001, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
6895    0x03000005, 0x80110000, 0x80000000, 0xa0550002, 0x03000002, 0x80010000,
6896    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
6897    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
6898    0xa0000003, 0x04000004, 0x80010001, 0x80000000, 0xa0000004, 0xa0550004,
6899    0x04000004, 0x80010002, 0x80aa0000, 0xa0000004, 0xa0550004, 0x02000001,
6900    0x80020002, 0xa0550003, 0x02000001, 0x80020001, 0xa0550003, 0x03000042,
6901    0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0001, 0x80e40001,
6902    0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000, 0xa0e40800, 0x04000012,
6903    0x800f0004, 0x80550000, 0x80e40002, 0x80e40001, 0x0200000f, 0x80010000,
6904    0x80000004, 0x0200000f, 0x80020000, 0x80550004, 0x0200000f, 0x80040000,
6905    0x80aa0004, 0x03000005, 0x80070000, 0x80e40000, 0xa0aa0004, 0x0200000e,
6906    0x80010001, 0x80000000, 0x0200000e, 0x80020001, 0x80550000, 0x0200000e,
6907    0x80040001, 0x80aa0000, 0x04000004, 0x80070004, 0x80e40001, 0xa0000005,
6908    0xa0550005, 0x03000005, 0x800f0000, 0x80ff0003, 0x80e40004, 0x03000005,
6909    0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
6910    0x0000ffff
6911};
6912#if 0
6913//
6914// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
6915//
6916//   fxc /T ps_2_0 /Vn radial26 /Fh tmp.h tmp.hlsl
6917//
6918//
6919// Parameters:
6920//
6921//   sampler2D colors;
6922//   float2 fractions[4];
6923//   float3 m0;
6924//   float3 m1;
6925//   sampler2D mask;
6926//   float3 precalc;
6927//
6928//
6929// Registers:
6930//
6931//   Name         Reg   Size
6932//   ------------ ----- ----
6933//   fractions    c0       3
6934//   m0           c16      1
6935//   m1           c17      1
6936//   precalc      c18      1
6937//   mask         s0       1
6938//   colors       s1       1
6939//
6940
6941    ps_2_0
6942    def c3, 1, 0.0625, 0.03125, 0.5
6943    def c4, 0.416667014, 1.05499995, -0.0549999997, 0
6944    dcl t0.xy
6945    dcl t1.xy
6946    dcl v0
6947    dcl_2d s0
6948    dcl_2d s1
6949    mov r0.xy, t1
6950    mov r0.z, c3.x
6951    dp3 r0.w, r0, c17
6952    dp3 r0.x, r0, c16
6953    mul r0.y, r0.w, r0.w
6954    mul r0.y, r0.y, c18.y
6955    add r0.x, r0.x, -c18.x
6956    mad r0.y, r0.x, r0.x, r0.y
6957    rsq r0.y, r0.y
6958    rcp r0.y, r0.y
6959    mad r0.x, c18.x, r0.x, r0.y
6960    mul r0.x, r0.x, c18.z
6961    frc r0.x, r0.x
6962    add r0.y, r0.x, -c0.x
6963    mul_sat r0.y, r0.y, c0.y
6964    add r0.z, r0.x, -c1.x
6965    add r0.x, r0.x, -c2.x
6966    mul_sat r0.z, r0.z, c1.y
6967    add r0.y, r0.y, r0.z
6968    mul_sat r0.x, r0.x, c2.y
6969    add r0.x, r0.y, r0.x
6970    frc r0.y, r0.x
6971    add r0.x, r0.x, -r0.y
6972    add r0.z, r0.x, c3.x
6973    mad r1.x, r0.x, c3.y, c3.z
6974    mad r2.x, r0.z, c3.y, c3.z
6975    mov r2.y, c3.w
6976    mov r1.y, c3.w
6977    texld r2, r2, s1
6978    texld r1, r1, s1
6979    texld r3, t0, s0
6980    lrp r4, r0.y, r2, r1
6981    log r0.x, r4.x
6982    log r0.y, r4.y
6983    log r0.z, r4.z
6984    mul r0.xyz, r0, c4.x
6985    exp r1.x, r0.x
6986    exp r1.y, r0.y
6987    exp r1.z, r0.z
6988    mad r4.xyz, r1, c4.y, c4.z
6989    mul r0, r3.w, r4
6990    mul r0, r0, v0
6991    mov oC0, r0
6992
6993// approximately 43 instruction slots used (3 texture, 40 arithmetic)
6994#endif
6995
6996const DWORD radial26[] =
6997{
6998    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
6999    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
7000    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020003,
7001    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
7002    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
7003    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
7004    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
7005    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
7006    0xabab0073, 0x00030001, 0x00020001, 0x00000004, 0x00000000, 0xab00306d,
7007    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
7008    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
7009    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
7010    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0003,
7011    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x05000051, 0xa00f0004,
7012    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
7013    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
7014    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
7015    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
7016    0xa0000003, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
7017    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
7018    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
7019    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
7020    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
7021    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
7022    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x02000013,
7023    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
7024    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
7025    0x80000000, 0xa1000001, 0x03000002, 0x80010000, 0x80000000, 0xa1000002,
7026    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
7027    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550002,
7028    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
7029    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
7030    0x80040000, 0x80000000, 0xa0000003, 0x04000004, 0x80010001, 0x80000000,
7031    0xa0550003, 0xa0aa0003, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550003,
7032    0xa0aa0003, 0x02000001, 0x80020002, 0xa0ff0003, 0x02000001, 0x80020001,
7033    0xa0ff0003, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042,
7034    0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000,
7035    0xa0e40800, 0x04000012, 0x800f0004, 0x80550000, 0x80e40002, 0x80e40001,
7036    0x0200000f, 0x80010000, 0x80000004, 0x0200000f, 0x80020000, 0x80550004,
7037    0x0200000f, 0x80040000, 0x80aa0004, 0x03000005, 0x80070000, 0x80e40000,
7038    0xa0000004, 0x0200000e, 0x80010001, 0x80000000, 0x0200000e, 0x80020001,
7039    0x80550000, 0x0200000e, 0x80040001, 0x80aa0000, 0x04000004, 0x80070004,
7040    0x80e40001, 0xa0550004, 0xa0aa0004, 0x03000005, 0x800f0000, 0x80ff0003,
7041    0x80e40004, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000, 0x02000001,
7042    0x800f0800, 0x80e40000, 0x0000ffff
7043};
7044#if 0
7045//
7046// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
7047//
7048//   fxc /T ps_2_0 /Vn radial28 /Fh tmp.h tmp.hlsl
7049//
7050//
7051// Parameters:
7052//
7053//   sampler2D colors;
7054//   float2 fractions[8];
7055//   float3 m0;
7056//   float3 m1;
7057//   sampler2D mask;
7058//   float3 precalc;
7059//
7060//
7061// Registers:
7062//
7063//   Name         Reg   Size
7064//   ------------ ----- ----
7065//   fractions    c0       7
7066//   m0           c16      1
7067//   m1           c17      1
7068//   precalc      c18      1
7069//   mask         s0       1
7070//   colors       s1       1
7071//
7072
7073    ps_2_0
7074    def c7, 1, 0, 0.5, -1
7075    def c8, 1, 0.5, 0.0625, 0.03125
7076    def c9, 0.416667014, 1.05499995, -0.0549999997, 0
7077    dcl t0.xy
7078    dcl t1.xy
7079    dcl v0
7080    dcl_2d s0
7081    dcl_2d s1
7082    mov r0.z, c7.x
7083    mov r0.xy, t1
7084    dp3 r0.w, r0, c17
7085    mul r0.w, r0.w, r0.w
7086    mul r0.w, r0.w, c18.y
7087    dp3 r0.x, r0, c16
7088    add r0.x, r0.x, -c18.x
7089    mad r0.y, r0.x, r0.x, r0.w
7090    rsq r0.y, r0.y
7091    rcp r0.y, r0.y
7092    mad r0.x, c18.x, r0.x, r0.y
7093    mov r0.z, c18.z
7094    mad r0.y, r0.x, r0.z, -c0.x
7095    mul_sat r0.y, r0.y, c0.y
7096    mad r0.w, r0.x, r0.z, -c1.x
7097    mul_sat r0.w, r0.w, c1.y
7098    add r0.y, r0.y, r0.w
7099    mad r0.w, r0.x, r0.z, -c2.x
7100    mul_sat r0.w, r0.w, c2.y
7101    add r0.y, r0.y, r0.w
7102    mad r0.w, r0.x, r0.z, -c3.x
7103    mul_sat r0.w, r0.w, c3.y
7104    add r0.y, r0.y, r0.w
7105    mad r0.w, r0.x, r0.z, -c4.x
7106    mul_sat r0.w, r0.w, c4.y
7107    add r0.y, r0.y, r0.w
7108    mad r0.w, r0.x, r0.z, -c5.x
7109    mul_sat r0.w, r0.w, c5.y
7110    add r0.y, r0.y, r0.w
7111    mad r0.w, r0.x, r0.z, -c6.x
7112    mul_sat r0.w, r0.w, c6.y
7113    add r0.y, r0.y, r0.w
7114    frc r0.w, r0.y
7115    add r0.y, r0.y, -r0.w
7116    add r1.w, r0.y, c7.x
7117    mad r1.x, r1.w, c8.z, c8.w
7118    mul r1.z, r0.x, c18.z
7119    mad r1.w, r0.x, r0.z, c7.w
7120    mad r0.x, r0.y, c8.z, c8.w
7121    mov r0.y, c7.z
7122    mov r1.y, c7.z
7123    mov r2.xy, c8
7124    mov r3.xy, c7.yzxw
7125    texld r4, r0, s1
7126    texld r5, r1, s1
7127    texld r2, r2, s1
7128    texld r3, r3, s1
7129    texld r6, t0, s0
7130    lrp r7, r0.w, r5, r4
7131    cmp r0, r1.w, r2, r7
7132    cmp r0, -r1.z, r3, r0
7133    log r1.x, r0.x
7134    log r1.y, r0.y
7135    log r1.z, r0.z
7136    mul r1.xyz, r1, c9.x
7137    exp r2.x, r1.x
7138    exp r2.y, r1.y
7139    exp r2.z, r1.z
7140    mad r0.xyz, r2, c9.y, c9.z
7141    mul r0, r6.w, r0
7142    mul r0, r0, v0
7143    mov oC0, r0
7144
7145// approximately 62 instruction slots used (5 texture, 57 arithmetic)
7146#endif
7147
7148const DWORD radial28[] =
7149{
7150    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
7151    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
7152    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020007,
7153    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
7154    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
7155    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
7156    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
7157    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
7158    0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000, 0xab00306d,
7159    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
7160    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
7161    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
7162    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
7163    0x3f800000, 0x00000000, 0x3f000000, 0xbf800000, 0x05000051, 0xa00f0008,
7164    0x3f800000, 0x3f000000, 0x3d800000, 0x3d000000, 0x05000051, 0xa00f0009,
7165    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
7166    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
7167    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
7168    0xa00f0801, 0x02000001, 0x80040000, 0xa0000007, 0x02000001, 0x80030000,
7169    0xb0e40001, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000005,
7170    0x80080000, 0x80ff0000, 0x80ff0000, 0x03000005, 0x80080000, 0x80ff0000,
7171    0xa0550012, 0x03000008, 0x80010000, 0x80e40000, 0xa0e40010, 0x03000002,
7172    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
7173    0x80000000, 0x80ff0000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
7174    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
7175    0x80550000, 0x02000001, 0x80040000, 0xa0aa0012, 0x04000004, 0x80020000,
7176    0x80000000, 0x80aa0000, 0xa1000000, 0x03000005, 0x80120000, 0x80550000,
7177    0xa0550000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000001,
7178    0x03000005, 0x80180000, 0x80ff0000, 0xa0550001, 0x03000002, 0x80020000,
7179    0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000, 0x80aa0000,
7180    0xa1000002, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550002, 0x03000002,
7181    0x80020000, 0x80550000, 0x80ff0000, 0x04000004, 0x80080000, 0x80000000,
7182    0x80aa0000, 0xa1000003, 0x03000005, 0x80180000, 0x80ff0000, 0xa0550003,
7183    0x03000002, 0x80020000, 0x80550000, 0x80ff0000, 0x04000004, 0x80080000,
7184    0x80000000, 0x80aa0000, 0xa1000004, 0x03000005, 0x80180000, 0x80ff0000,
7185    0xa0550004, 0x03000002, 0x80020000, 0x80550000, 0x80ff0000, 0x04000004,
7186    0x80080000, 0x80000000, 0x80aa0000, 0xa1000005, 0x03000005, 0x80180000,
7187    0x80ff0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80ff0000,
7188    0x04000004, 0x80080000, 0x80000000, 0x80aa0000, 0xa1000006, 0x03000005,
7189    0x80180000, 0x80ff0000, 0xa0550006, 0x03000002, 0x80020000, 0x80550000,
7190    0x80ff0000, 0x02000013, 0x80080000, 0x80550000, 0x03000002, 0x80020000,
7191    0x80550000, 0x81ff0000, 0x03000002, 0x80080001, 0x80550000, 0xa0000007,
7192    0x04000004, 0x80010001, 0x80ff0001, 0xa0aa0008, 0xa0ff0008, 0x03000005,
7193    0x80040001, 0x80000000, 0xa0aa0012, 0x04000004, 0x80080001, 0x80000000,
7194    0x80aa0000, 0xa0ff0007, 0x04000004, 0x80010000, 0x80550000, 0xa0aa0008,
7195    0xa0ff0008, 0x02000001, 0x80020000, 0xa0aa0007, 0x02000001, 0x80020001,
7196    0xa0aa0007, 0x02000001, 0x80030002, 0xa0e40008, 0x02000001, 0x80030003,
7197    0xa0c90007, 0x03000042, 0x800f0004, 0x80e40000, 0xa0e40801, 0x03000042,
7198    0x800f0005, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0002, 0x80e40002,
7199    0xa0e40801, 0x03000042, 0x800f0003, 0x80e40003, 0xa0e40801, 0x03000042,
7200    0x800f0006, 0xb0e40000, 0xa0e40800, 0x04000012, 0x800f0007, 0x80ff0000,
7201    0x80e40005, 0x80e40004, 0x04000058, 0x800f0000, 0x80ff0001, 0x80e40002,
7202    0x80e40007, 0x04000058, 0x800f0000, 0x81aa0001, 0x80e40003, 0x80e40000,
7203    0x0200000f, 0x80010001, 0x80000000, 0x0200000f, 0x80020001, 0x80550000,
7204    0x0200000f, 0x80040001, 0x80aa0000, 0x03000005, 0x80070001, 0x80e40001,
7205    0xa0000009, 0x0200000e, 0x80010002, 0x80000001, 0x0200000e, 0x80020002,
7206    0x80550001, 0x0200000e, 0x80040002, 0x80aa0001, 0x04000004, 0x80070000,
7207    0x80e40002, 0xa0550009, 0xa0aa0009, 0x03000005, 0x800f0000, 0x80ff0006,
7208    0x80e40000, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000, 0x02000001,
7209    0x800f0800, 0x80e40000, 0x0000ffff
7210};
7211#if 0
7212//
7213// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
7214//
7215//   fxc /T ps_2_0 /Vn radial29 /Fh tmp.h tmp.hlsl
7216//
7217//
7218// Parameters:
7219//
7220//   sampler2D colors;
7221//   float2 fractions[8];
7222//   float3 m0;
7223//   float3 m1;
7224//   sampler2D mask;
7225//   float3 precalc;
7226//
7227//
7228// Registers:
7229//
7230//   Name         Reg   Size
7231//   ------------ ----- ----
7232//   fractions    c0       7
7233//   m0           c16      1
7234//   m1           c17      1
7235//   precalc      c18      1
7236//   mask         s0       1
7237//   colors       s1       1
7238//
7239
7240    ps_2_0
7241    def c7, 1, 0.5, -0.5, 2
7242    def c8, 0.0625, 0.03125, 0.416667014, 0
7243    def c9, 1.05499995, -0.0549999997, 0, 0
7244    dcl t0.xy
7245    dcl t1.xy
7246    dcl v0
7247    dcl_2d s0
7248    dcl_2d s1
7249    mov r0.xy, t1
7250    mov r0.z, c7.x
7251    dp3 r0.w, r0, c17
7252    dp3 r0.x, r0, c16
7253    mul r0.y, r0.w, r0.w
7254    mul r0.y, r0.y, c18.y
7255    add r0.x, r0.x, -c18.x
7256    mad r0.y, r0.x, r0.x, r0.y
7257    rsq r0.y, r0.y
7258    rcp r0.y, r0.y
7259    mad r0.x, c18.x, r0.x, r0.y
7260    mul r0.x, r0.x, c18.z
7261    mul r0.x, r0.x, c7.y
7262    frc r0.x, r0.x
7263    add r0.x, r0.x, c7.z
7264    abs r0.x, r0.x
7265    mad r0.x, r0.x, -c7.w, c7.x
7266    add r0.y, r0.x, -c0.x
7267    mul_sat r0.y, r0.y, c0.y
7268    add r0.z, r0.x, -c1.x
7269    mul_sat r0.z, r0.z, c1.y
7270    add r0.y, r0.y, r0.z
7271    add r0.z, r0.x, -c2.x
7272    mul_sat r0.z, r0.z, c2.y
7273    add r0.y, r0.y, r0.z
7274    add r0.z, r0.x, -c3.x
7275    mul_sat r0.z, r0.z, c3.y
7276    add r0.y, r0.y, r0.z
7277    add r0.z, r0.x, -c4.x
7278    mul_sat r0.z, r0.z, c4.y
7279    add r0.y, r0.y, r0.z
7280    add r0.z, r0.x, -c5.x
7281    add r0.x, r0.x, -c6.x
7282    mul_sat r0.z, r0.z, c5.y
7283    add r0.y, r0.y, r0.z
7284    mul_sat r0.x, r0.x, c6.y
7285    add r0.x, r0.y, r0.x
7286    frc r0.y, r0.x
7287    add r0.x, r0.x, -r0.y
7288    add r0.z, r0.x, c7.x
7289    mad r1.x, r0.x, c8.x, c8.y
7290    mad r2.x, r0.z, c8.x, c8.y
7291    mov r2.y, c7.y
7292    mov r1.y, c7.y
7293    texld r2, r2, s1
7294    texld r1, r1, s1
7295    texld r3, t0, s0
7296    lrp r4, r0.y, r2, r1
7297    log r0.x, r4.x
7298    log r0.y, r4.y
7299    log r0.z, r4.z
7300    mul r0.xyz, r0, c8.z
7301    exp r1.x, r0.x
7302    exp r1.y, r0.y
7303    exp r1.z, r0.z
7304    mad r4.xyz, r1, c9.x, c9.y
7305    mul r0, r3.w, r4
7306    mul r0, r0, v0
7307    mov oC0, r0
7308
7309// approximately 59 instruction slots used (3 texture, 56 arithmetic)
7310#endif
7311
7312const DWORD radial29[] =
7313{
7314    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
7315    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
7316    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020007,
7317    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
7318    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
7319    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
7320    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
7321    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
7322    0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000, 0xab00306d,
7323    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
7324    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
7325    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
7326    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
7327    0x3f800000, 0x3f000000, 0xbf000000, 0x40000000, 0x05000051, 0xa00f0008,
7328    0x3d800000, 0x3d000000, 0x3ed55561, 0x00000000, 0x05000051, 0xa00f0009,
7329    0x3f870a3d, 0xbd6147ae, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
7330    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
7331    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
7332    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
7333    0xa0000007, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
7334    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
7335    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
7336    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
7337    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
7338    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
7339    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x03000005,
7340    0x80010000, 0x80000000, 0xa0550007, 0x02000013, 0x80010000, 0x80000000,
7341    0x03000002, 0x80010000, 0x80000000, 0xa0aa0007, 0x02000023, 0x80010000,
7342    0x80000000, 0x04000004, 0x80010000, 0x80000000, 0xa1ff0007, 0xa0000007,
7343    0x03000002, 0x80020000, 0x80000000, 0xa1000000, 0x03000005, 0x80120000,
7344    0x80550000, 0xa0550000, 0x03000002, 0x80040000, 0x80000000, 0xa1000001,
7345    0x03000005, 0x80140000, 0x80aa0000, 0xa0550001, 0x03000002, 0x80020000,
7346    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000002,
7347    0x03000005, 0x80140000, 0x80aa0000, 0xa0550002, 0x03000002, 0x80020000,
7348    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000003,
7349    0x03000005, 0x80140000, 0x80aa0000, 0xa0550003, 0x03000002, 0x80020000,
7350    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000004,
7351    0x03000005, 0x80140000, 0x80aa0000, 0xa0550004, 0x03000002, 0x80020000,
7352    0x80550000, 0x80aa0000, 0x03000002, 0x80040000, 0x80000000, 0xa1000005,
7353    0x03000002, 0x80010000, 0x80000000, 0xa1000006, 0x03000005, 0x80140000,
7354    0x80aa0000, 0xa0550005, 0x03000002, 0x80020000, 0x80550000, 0x80aa0000,
7355    0x03000005, 0x80110000, 0x80000000, 0xa0550006, 0x03000002, 0x80010000,
7356    0x80550000, 0x80000000, 0x02000013, 0x80020000, 0x80000000, 0x03000002,
7357    0x80010000, 0x80000000, 0x81550000, 0x03000002, 0x80040000, 0x80000000,
7358    0xa0000007, 0x04000004, 0x80010001, 0x80000000, 0xa0000008, 0xa0550008,
7359    0x04000004, 0x80010002, 0x80aa0000, 0xa0000008, 0xa0550008, 0x02000001,
7360    0x80020002, 0xa0550007, 0x02000001, 0x80020001, 0xa0550007, 0x03000042,
7361    0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042, 0x800f0001, 0x80e40001,
7362    0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000, 0xa0e40800, 0x04000012,
7363    0x800f0004, 0x80550000, 0x80e40002, 0x80e40001, 0x0200000f, 0x80010000,
7364    0x80000004, 0x0200000f, 0x80020000, 0x80550004, 0x0200000f, 0x80040000,
7365    0x80aa0004, 0x03000005, 0x80070000, 0x80e40000, 0xa0aa0008, 0x0200000e,
7366    0x80010001, 0x80000000, 0x0200000e, 0x80020001, 0x80550000, 0x0200000e,
7367    0x80040001, 0x80aa0000, 0x04000004, 0x80070004, 0x80e40001, 0xa0000009,
7368    0xa0550009, 0x03000005, 0x800f0000, 0x80ff0003, 0x80e40004, 0x03000005,
7369    0x800f0000, 0x80e40000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000,
7370    0x0000ffff
7371};
7372#if 0
7373//
7374// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
7375//
7376//   fxc /T ps_2_0 /Vn radial30 /Fh tmp.h tmp.hlsl
7377//
7378//
7379// Parameters:
7380//
7381//   sampler2D colors;
7382//   float2 fractions[8];
7383//   float3 m0;
7384//   float3 m1;
7385//   sampler2D mask;
7386//   float3 precalc;
7387//
7388//
7389// Registers:
7390//
7391//   Name         Reg   Size
7392//   ------------ ----- ----
7393//   fractions    c0       7
7394//   m0           c16      1
7395//   m1           c17      1
7396//   precalc      c18      1
7397//   mask         s0       1
7398//   colors       s1       1
7399//
7400
7401    ps_2_0
7402    def c7, 1, 0.0625, 0.03125, 0.5
7403    def c8, 0.416667014, 1.05499995, -0.0549999997, 0
7404    dcl t0.xy
7405    dcl t1.xy
7406    dcl v0
7407    dcl_2d s0
7408    dcl_2d s1
7409    mov r0.xy, t1
7410    mov r0.z, c7.x
7411    dp3 r0.w, r0, c17
7412    dp3 r0.x, r0, c16
7413    mul r0.y, r0.w, r0.w
7414    mul r0.y, r0.y, c18.y
7415    add r0.x, r0.x, -c18.x
7416    mad r0.y, r0.x, r0.x, r0.y
7417    rsq r0.y, r0.y
7418    rcp r0.y, r0.y
7419    mad r0.x, c18.x, r0.x, r0.y
7420    mul r0.x, r0.x, c18.z
7421    frc r0.x, r0.x
7422    add r0.y, r0.x, -c0.x
7423    mul_sat r0.y, r0.y, c0.y
7424    add r0.z, r0.x, -c1.x
7425    mul_sat r0.z, r0.z, c1.y
7426    add r0.y, r0.y, r0.z
7427    add r0.z, r0.x, -c2.x
7428    mul_sat r0.z, r0.z, c2.y
7429    add r0.y, r0.y, r0.z
7430    add r0.z, r0.x, -c3.x
7431    mul_sat r0.z, r0.z, c3.y
7432    add r0.y, r0.y, r0.z
7433    add r0.z, r0.x, -c4.x
7434    mul_sat r0.z, r0.z, c4.y
7435    add r0.y, r0.y, r0.z
7436    add r0.z, r0.x, -c5.x
7437    add r0.x, r0.x, -c6.x
7438    mul_sat r0.z, r0.z, c5.y
7439    add r0.y, r0.y, r0.z
7440    mul_sat r0.x, r0.x, c6.y
7441    add r0.x, r0.y, r0.x
7442    frc r0.y, r0.x
7443    add r0.x, r0.x, -r0.y
7444    add r0.z, r0.x, c7.x
7445    mad r1.x, r0.x, c7.y, c7.z
7446    mad r2.x, r0.z, c7.y, c7.z
7447    mov r2.y, c7.w
7448    mov r1.y, c7.w
7449    texld r2, r2, s1
7450    texld r1, r1, s1
7451    texld r3, t0, s0
7452    lrp r4, r0.y, r2, r1
7453    log r0.x, r4.x
7454    log r0.y, r4.y
7455    log r0.z, r4.z
7456    mul r0.xyz, r0, c8.x
7457    exp r1.x, r0.x
7458    exp r1.y, r0.y
7459    exp r1.z, r0.z
7460    mad r4.xyz, r1, c8.y, c8.z
7461    mul r0, r3.w, r4
7462    mul r0, r0, v0
7463    mov oC0, r0
7464
7465// approximately 55 instruction slots used (3 texture, 52 arithmetic)
7466#endif
7467
7468const DWORD radial30[] =
7469{
7470    0xffff0200, 0x004afffe, 0x42415443, 0x0000001c, 0x000000f3, 0xffff0200,
7471    0x00000006, 0x0000001c, 0x20000100, 0x000000ec, 0x00000094, 0x00010003,
7472    0x00060001, 0x0000009c, 0x00000000, 0x000000ac, 0x00000002, 0x00020007,
7473    0x000000b8, 0x00000000, 0x000000c8, 0x00100002, 0x00420001, 0x000000cc,
7474    0x00000000, 0x000000dc, 0x00110002, 0x00460001, 0x000000cc, 0x00000000,
7475    0x000000df, 0x00000003, 0x00020001, 0x0000009c, 0x00000000, 0x000000e4,
7476    0x00120002, 0x004a0001, 0x000000cc, 0x00000000, 0x6f6c6f63, 0xab007372,
7477    0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x63617266, 0x6e6f6974,
7478    0xabab0073, 0x00030001, 0x00020001, 0x00000008, 0x00000000, 0xab00306d,
7479    0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x6d00316d, 0x006b7361,
7480    0x63657270, 0x00636c61, 0x325f7370, 0x4d00305f, 0x6f726369, 0x74666f73,
7481    0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
7482    0x2e392072, 0x392e3931, 0x322e3934, 0x00313131, 0x05000051, 0xa00f0007,
7483    0x3f800000, 0x3d800000, 0x3d000000, 0x3f000000, 0x05000051, 0xa00f0008,
7484    0x3ed55561, 0x3f870a3d, 0xbd6147ae, 0x00000000, 0x0200001f, 0x80000000,
7485    0xb0030000, 0x0200001f, 0x80000000, 0xb0030001, 0x0200001f, 0x80000000,
7486    0x900f0000, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f, 0x90000000,
7487    0xa00f0801, 0x02000001, 0x80030000, 0xb0e40001, 0x02000001, 0x80040000,
7488    0xa0000007, 0x03000008, 0x80080000, 0x80e40000, 0xa0e40011, 0x03000008,
7489    0x80010000, 0x80e40000, 0xa0e40010, 0x03000005, 0x80020000, 0x80ff0000,
7490    0x80ff0000, 0x03000005, 0x80020000, 0x80550000, 0xa0550012, 0x03000002,
7491    0x80010000, 0x80000000, 0xa1000012, 0x04000004, 0x80020000, 0x80000000,
7492    0x80000000, 0x80550000, 0x02000007, 0x80020000, 0x80550000, 0x02000006,
7493    0x80020000, 0x80550000, 0x04000004, 0x80010000, 0xa0000012, 0x80000000,
7494    0x80550000, 0x03000005, 0x80010000, 0x80000000, 0xa0aa0012, 0x02000013,
7495    0x80010000, 0x80000000, 0x03000002, 0x80020000, 0x80000000, 0xa1000000,
7496    0x03000005, 0x80120000, 0x80550000, 0xa0550000, 0x03000002, 0x80040000,
7497    0x80000000, 0xa1000001, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550001,
7498    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
7499    0x80000000, 0xa1000002, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550002,
7500    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
7501    0x80000000, 0xa1000003, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550003,
7502    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
7503    0x80000000, 0xa1000004, 0x03000005, 0x80140000, 0x80aa0000, 0xa0550004,
7504    0x03000002, 0x80020000, 0x80550000, 0x80aa0000, 0x03000002, 0x80040000,
7505    0x80000000, 0xa1000005, 0x03000002, 0x80010000, 0x80000000, 0xa1000006,
7506    0x03000005, 0x80140000, 0x80aa0000, 0xa0550005, 0x03000002, 0x80020000,
7507    0x80550000, 0x80aa0000, 0x03000005, 0x80110000, 0x80000000, 0xa0550006,
7508    0x03000002, 0x80010000, 0x80550000, 0x80000000, 0x02000013, 0x80020000,
7509    0x80000000, 0x03000002, 0x80010000, 0x80000000, 0x81550000, 0x03000002,
7510    0x80040000, 0x80000000, 0xa0000007, 0x04000004, 0x80010001, 0x80000000,
7511    0xa0550007, 0xa0aa0007, 0x04000004, 0x80010002, 0x80aa0000, 0xa0550007,
7512    0xa0aa0007, 0x02000001, 0x80020002, 0xa0ff0007, 0x02000001, 0x80020001,
7513    0xa0ff0007, 0x03000042, 0x800f0002, 0x80e40002, 0xa0e40801, 0x03000042,
7514    0x800f0001, 0x80e40001, 0xa0e40801, 0x03000042, 0x800f0003, 0xb0e40000,
7515    0xa0e40800, 0x04000012, 0x800f0004, 0x80550000, 0x80e40002, 0x80e40001,
7516    0x0200000f, 0x80010000, 0x80000004, 0x0200000f, 0x80020000, 0x80550004,
7517    0x0200000f, 0x80040000, 0x80aa0004, 0x03000005, 0x80070000, 0x80e40000,
7518    0xa0000008, 0x0200000e, 0x80010001, 0x80000000, 0x0200000e, 0x80020001,
7519    0x80550000, 0x0200000e, 0x80040001, 0x80aa0000, 0x04000004, 0x80070004,
7520    0x80e40001, 0xa0550008, 0xa0aa0008, 0x03000005, 0x800f0000, 0x80ff0003,
7521    0x80e40004, 0x03000005, 0x800f0000, 0x80e40000, 0x90e40000, 0x02000001,
7522    0x800f0800, 0x80e40000, 0x0000ffff
7523};
7524const DWORD *radialShaders[] =
7525{
7526    radial0,
7527    radial1,
7528    radial2,
7529    NULL,
7530    radial4,
7531    radial5,
7532    radial6,
7533    NULL,
7534    radial8,
7535    radial9,
7536    radial10,
7537    NULL,
7538    radial12,
7539    radial13,
7540    radial14,
7541    NULL,
7542    radial16,
7543    radial17,
7544    radial18,
7545    NULL,
7546    radial20,
7547    radial21,
7548    radial22,
7549    NULL,
7550    radial24,
7551    radial25,
7552    radial26,
7553    NULL,
7554    radial28,
7555    radial29,
7556    radial30,
7557    NULL,
7558};
7559
7560#if 0
7561//
7562// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
7563//
7564//   fxc /T ps_2_0 /Vn lcdtext0 /Fh tmp.h tmp.hlsl
7565//
7566//
7567// Parameters:
7568//
7569//   sampler2D dstTex;
7570//   float3 gamma;
7571//   sampler2D glyphTex;
7572//   float3 invgamma;
7573//   float3 srcAdj;
7574//
7575//
7576// Registers:
7577//
7578//   Name         Reg   Size
7579//   ------------ ----- ----
7580//   srcAdj       c0       1
7581//   invgamma     c1       1
7582//   gamma        c2       1
7583//   glyphTex     s0       1
7584//   dstTex       s1       1
7585//
7586
7587    ps_2_0
7588    def c3, -1, 0, 1, 0
7589    dcl t0.xy
7590    dcl t1.xy
7591    dcl_2d s0
7592    dcl_2d s1
7593    texld r0, t0, s0
7594    dp3 r0.w, r0, r0
7595    cmp r1, -r0.w, c3.x, c3.y
7596    texkill r1
7597    texld r1, t1, s1
7598    log r2.x, r1.x
7599    log r2.y, r1.y
7600    log r2.z, r1.z
7601    mul r1.xyz, r2, c1
7602    exp r2.x, r1.x
7603    exp r2.y, r1.y
7604    exp r2.z, r1.z
7605    lrp r1.xyz, r0, c0, r2
7606    log r0.x, r1.x
7607    log r0.y, r1.y
7608    log r0.z, r1.z
7609    mul r0.xyz, r0, c2
7610    exp r1.x, r0.x
7611    exp r1.y, r0.y
7612    exp r1.z, r0.z
7613    mov r1.w, c3.z
7614    mov oC0, r1
7615
7616// approximately 22 instruction slots used (2 texture, 20 arithmetic)
7617#endif
7618
7619const DWORD lcdtext0[] =
7620{
7621    0xffff0200, 0x0042fffe, 0x42415443, 0x0000001c, 0x000000d0, 0xffff0200,
7622    0x00000005, 0x0000001c, 0x20000100, 0x000000c9, 0x00000080, 0x00010003,
7623    0x00060001, 0x00000088, 0x00000000, 0x00000098, 0x00020002, 0x000a0001,
7624    0x000000a0, 0x00000000, 0x000000b0, 0x00000003, 0x00020001, 0x00000088,
7625    0x00000000, 0x000000b9, 0x00010002, 0x00060001, 0x000000a0, 0x00000000,
7626    0x000000c2, 0x00000002, 0x00020001, 0x000000a0, 0x00000000, 0x54747364,
7627    0xab007865, 0x000c0004, 0x00010001, 0x00000001, 0x00000000, 0x6d6d6167,
7628    0xabab0061, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x70796c67,
7629    0x78655468, 0x766e6900, 0x6d6d6167, 0x72730061, 0x6a644163, 0x5f737000,
7630    0x00305f32, 0x7263694d, 0x666f736f, 0x52282074, 0x4c482029, 0x53204c53,
7631    0x65646168, 0x6f432072, 0x6c69706d, 0x39207265, 0x2e39312e, 0x2e393439,
7632    0x31313132, 0xababab00, 0x05000051, 0xa00f0003, 0xbf800000, 0x80000000,
7633    0x3f800000, 0x00000000, 0x0200001f, 0x80000000, 0xb0030000, 0x0200001f,
7634    0x80000000, 0xb0030001, 0x0200001f, 0x90000000, 0xa00f0800, 0x0200001f,
7635    0x90000000, 0xa00f0801, 0x03000042, 0x800f0000, 0xb0e40000, 0xa0e40800,
7636    0x03000008, 0x80080000, 0x80e40000, 0x80e40000, 0x04000058, 0x800f0001,
7637    0x81ff0000, 0xa0000003, 0xa0550003, 0x01000041, 0x800f0001, 0x03000042,
7638    0x800f0001, 0xb0e40001, 0xa0e40801, 0x0200000f, 0x80010002, 0x80000001,
7639    0x0200000f, 0x80020002, 0x80550001, 0x0200000f, 0x80040002, 0x80aa0001,
7640    0x03000005, 0x80070001, 0x80e40002, 0xa0e40001, 0x0200000e, 0x80010002,
7641    0x80000001, 0x0200000e, 0x80020002, 0x80550001, 0x0200000e, 0x80040002,
7642    0x80aa0001, 0x04000012, 0x80070001, 0x80e40000, 0xa0e40000, 0x80e40002,
7643    0x0200000f, 0x80010000, 0x80000001, 0x0200000f, 0x80020000, 0x80550001,
7644    0x0200000f, 0x80040000, 0x80aa0001, 0x03000005, 0x80070000, 0x80e40000,
7645    0xa0e40002, 0x0200000e, 0x80010001, 0x80000000, 0x0200000e, 0x80020001,
7646    0x80550000, 0x0200000e, 0x80040001, 0x80aa0000, 0x02000001, 0x80080001,
7647    0xa0aa0003, 0x02000001, 0x800f0800, 0x80e40001, 0x0000ffff
7648};
7649#if 0
7650//
7651// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
7652//
7653//   fxc /T ps_2_a /Vn aapgram0 /Fh tmp.h tmp.hlsl
7654//
7655    ps_2_x
7656    dcl t0.xy
7657    dcl t1.xy
7658    dcl v0
7659    dsx r0.xy, t1.yxzw
7660    add r0.xy, r0, t1.yxzw
7661    min r1.xy, r0, t1.yxzw
7662    dsy r0.zw, t1.xyyx
7663    add r1.zw, r0, t1.xyyx
7664    add r0.zw, r0.xyxy, r0
7665    max r2.xy, t1.yxzw, r0
7666    min r0.xy, r1.zwzw, r1
7667    max r3.xy, r2, r1.zwzw
7668    min r1.xy, r0.zwzw, r0
7669    max r1.zw, r3.xyxy, r0
7670    mov_sat r0.xy, r1
7671    add r0.zw, -r1.xyxy, r1
7672    mov_sat r1.zw, r1
7673    add r0.xy, -r0, r1.zwzw
7674    mul r0.xy, r0.ywzw, r0.xzzw
7675    rcp r0.y, r0.y
7676    mul r0.x, r0.x, r0.y
7677    dsx r0.yz, t0.xyxw
7678    add r0.yz, r0, t0.xyxw
7679    min r1.xy, r0.yzzw, t0.yxzw
7680    dsy r1.zw, t0.xyyx
7681    add r2.xy, r1.zwzw, t0.yxzw
7682    add r1.zw, r0.xyyz, r1
7683    max r2.zw, t0.xyyx, r0.xyyz
7684    min r0.yz, r2.xxyw, r1.xxyw
7685    max r1.xy, r2.zwzw, r2
7686    min r2.xy, r1.zwzw, r0.yzzw
7687    max r0.yz, r1.xxyw, r1.xzww
7688    mov_sat r1.xy, r2
7689    add r1.zw, -r2.xyxy, r0.xyyz
7690    mov_sat r0.yz, r0
7691    add r0.yz, -r1.xxyw, r0
7692    mul r0.y, r0.z, r0.y
7693    mul r0.z, r1.w, r1.z
7694    rcp r0.z, r0.z
7695    mad r0.x, r0.y, r0.z, -r0.x
7696    mul r0, r0.x, v0
7697    mov oC0, r0
7698
7699// approximately 43 instruction slots used
7700#endif
7701
7702const DWORD aapgram0[] =
7703{
7704    0xffff0201, 0x0016fffe, 0x42415443, 0x0000001c, 0x00000023, 0xffff0201,
7705    0x00000000, 0x00000000, 0x20000100, 0x0000001c, 0x325f7370, 0x4d00615f,
7706    0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461,
7707    0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3931, 0x322e3934, 0x00313131,
7708    0x0200001f, 0x80000000, 0xb0030000, 0x0200001f, 0x80000000, 0xb0030001,
7709    0x0200001f, 0x80000000, 0x900f0000, 0x0200005b, 0x80030000, 0xb0e10001,
7710    0x03000002, 0x80030000, 0x80e40000, 0xb0e10001, 0x0300000a, 0x80030001,
7711    0x80e40000, 0xb0e10001, 0x0200005c, 0x800c0000, 0xb0140001, 0x03000002,
7712    0x800c0001, 0x80e40000, 0xb0140001, 0x03000002, 0x800c0000, 0x80440000,
7713    0x80e40000, 0x0300000b, 0x80030002, 0xb0e10001, 0x80e40000, 0x0300000a,
7714    0x80030000, 0x80ee0001, 0x80e40001, 0x0300000b, 0x80030003, 0x80e40002,
7715    0x80ee0001, 0x0300000a, 0x80030001, 0x80ee0000, 0x80e40000, 0x0300000b,
7716    0x800c0001, 0x80440003, 0x80e40000, 0x02000001, 0x80130000, 0x80e40001,
7717    0x03000002, 0x800c0000, 0x81440001, 0x80e40001, 0x02000001, 0x801c0001,
7718    0x80e40001, 0x03000002, 0x80030000, 0x81e40000, 0x80ee0001, 0x03000005,
7719    0x80030000, 0x80ed0000, 0x80e80000, 0x02000006, 0x80020000, 0x80550000,
7720    0x03000005, 0x80010000, 0x80000000, 0x80550000, 0x0200005b, 0x80060000,
7721    0xb0c40000, 0x03000002, 0x80060000, 0x80e40000, 0xb0c40000, 0x0300000a,
7722    0x80030001, 0x80e90000, 0xb0e10000, 0x0200005c, 0x800c0001, 0xb0140000,
7723    0x03000002, 0x80030002, 0x80ee0001, 0xb0e10000, 0x03000002, 0x800c0001,
7724    0x80940000, 0x80e40001, 0x0300000b, 0x800c0002, 0xb0140000, 0x80940000,
7725    0x0300000a, 0x80060000, 0x80d00002, 0x80d00001, 0x0300000b, 0x80030001,
7726    0x80ee0002, 0x80e40002, 0x0300000a, 0x80030002, 0x80ee0001, 0x80e90000,
7727    0x0300000b, 0x80060000, 0x80d00001, 0x80f80001, 0x02000001, 0x80130001,
7728    0x80e40002, 0x03000002, 0x800c0001, 0x81440002, 0x80940000, 0x02000001,
7729    0x80160000, 0x80e40000, 0x03000002, 0x80060000, 0x81d00001, 0x80e40000,
7730    0x03000005, 0x80020000, 0x80aa0000, 0x80550000, 0x03000005, 0x80040000,
7731    0x80ff0001, 0x80aa0001, 0x02000006, 0x80040000, 0x80aa0000, 0x04000004,
7732    0x80010000, 0x80550000, 0x80aa0000, 0x81000000, 0x03000005, 0x800f0000,
7733    0x80000000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
7734};
7735