ProjectArcade
88 строк · 1.6 Кб
1void main()
2{
3//Changethis to increase the number of colors.
4int numColors =8;
5
6float4 to_gray = float4(0.3,0.59,0.11,0);
7float x1 = dot(to_gray, SampleOffset(int2( 1, 1)));
8float x0 = dot(to_gray, SampleOffset(int2(-1,-1)));
9float x3 = dot(to_gray, SampleOffset(int2( 1,-1)));
10float x2 = dot(to_gray, SampleOffset(int2(-1, 1)));
11float edge = (x1 - x0) * (x1 - x0) + (x3 - x2) * (x3 - x2);
12float4 color = Sample();
13
14float4 c0 = color - float4(edge, edge, edge, edge) * 12.0;
15
16float red = 0.0;
17float green = 0.0;
18float blue = 0.0;
19bool rr = false;
20bool bb = false;
21bool gg = false;
22int count = 1;
23
24float colorN = 0.0;
25float colorB = 0.0;
26
27for (count = 1; count <= numColors; count++)
28{
29colorN = float(count / numColors);
30
31if ( c0.r <= colorN && c0.r >= colorB && rr == false )
32{
33if (count == 1)
34{
35if (colorN >= 0.1)
36red = 0.01;
37else
38red = colorN;
39}
40else if (count == numColors)
41red = 0.95;
42else
43red = colorN;
44
45rr = true;
46}
47
48if (c0.b <= colorN && c0.b >= colorB && bb == false)
49{
50if (count == 1)
51{
52if (colorN >= 0.1)
53blue = 0.01;
54else
55blue = colorN;
56}
57else if (count == numColors)
58blue = 0.95;
59else
60blue = colorN ;
61
62bb = true;
63}
64
65if (c0.g <= colorN && c0.g >= colorB && gg == false)
66{
67if (count == 1)
68{
69if (colorN >= 0.1)
70green = 0.01;
71else
72green = colorN;
73}
74else if (count == numColors)
75green = 0.95;
76else
77green = colorN;
78gg = true;
79}
80
81colorB = float(count / numColors);
82
83if (rr == true && bb == true && gg == true)
84break;
85}
86
87SetOutput(float4(red, green, blue, c0.a));
88}
89