From fd7212eeb81a810a132bfc00363444ab9b6ede89 Mon Sep 17 00:00:00 2001 From: Marcus Wanners Date: Mon, 5 Jul 2010 22:31:03 +0000 Subject: [PATCH] Adding 5 shaders by Gabriel P. --- 16bit.txt | 109 +++++++++++++++++++++++++++++++ 32bit.txt | 157 +++++++++++++++++++++++++++++++++++++++++++++ auto_toon2.txt | 99 ++++++++++++++++++++++++++++ darkerbrighter.txt | 36 +++++++++++ primarycolors.txt | 69 ++++++++++++++++++++ 5 files changed, 470 insertions(+) create mode 100644 16bit.txt create mode 100644 32bit.txt create mode 100644 auto_toon2.txt create mode 100644 darkerbrighter.txt create mode 100644 primarycolors.txt diff --git a/16bit.txt b/16bit.txt new file mode 100644 index 0000000000..4b4e2dfbff --- /dev/null +++ b/16bit.txt @@ -0,0 +1,109 @@ +uniform samplerRECT samp0 : register(s0); + +void main(out float4 ocol0 : COLOR0, in float2 uv0 : TEXCOORD0) +{ + float4 c0 = texRECT(samp0, uv0).rgba; + + //Change this number to increase the pixel size. + int pixelSize = 3; + + float red = 0.0; + float green = 0.0; + float blue = 0.0; + int val = uv0[0]; + int val2 = uv0[1]; + + val = val % pixelSize; + val2 = val2 % pixelSize; + + if(val == 0 && val2 == 0 ){ + if (c0.r < 0.1 && c0.r >= 0) + red = 0.1; + if (c0.r < 0.20 && c0.r >= 0.1) + red = 0.20; + if (c0.r <0.40 && c0.r >= 0.20) + red = 0.40; + if (c0.r <0.60 && c0.r >= 0.40) + red = 0.60; + if (c0.r <0.80 && c0.r >= 0.60) + red = 0.80; + if (c0.r >= 0.80) + red = 1; + + if (c0.b < 0.1 && c0.b >= 0) + blue = 0.1; + if (c0.b < 0.20 && c0.b >= 0.1) + blue = 0.20; + if (c0.b <0.40 && c0.b >= 0.20) + blue = 0.40; + if (c0.b <0.60 && c0.b >= 0.40) + blue = 0.60; + if (c0.b <0.80 && c0.b >= 0.60) + blue = 0.80; + if (c0.b >= 0.80) + blue = 1; + + + if (c0.g < 0.1 && c0.g >= 0) + green = 0.1; + if (c0.g < 0.20 && c0.g >= 0.1) + green = 0.20; + if (c0.g <0.40 && c0.g >= 0.20) + green = 0.40; + if (c0.g <0.60 && c0.g >= 0.40) + green = 0.60; + if (c0.g <0.80 && c0.g >= 0.60) + green = 0.80; + if (c0.g >= 0.80) + green = 1; + +} +else{ +float4 c1 = texRECT(samp0, uv0-float2(val, val2)).rgba; + + if (c1.r < 0.1 && c1.r >= 0) + red = 0.1; + if (c1.r < 0.20 && c1.r >= 0.1) + red = 0.20; + if (c1.r <0.40 && c1.r >= 0.20) + red = 0.40; + if (c1.r <0.60 && c1.r >= 0.40) + red = 0.60; + if (c1.r <0.80 && c1.r >= 0.60) + red = 0.80; + if (c1.r >= 0.80) + red = 1; + + if (c1.b < 0.1 && c1.b >= 0) + blue = 0.1; + if (c1.b < 0.20 && c1.b >= 0.1) + blue = 0.20; + if (c1.b <0.40 && c1.b >= 0.20) + blue = 0.40; + if (c1.b <0.60 && c1.b >= 0.40) + blue = 0.60; + if (c1.b <0.80 && c1.b >= 0.60) + blue = 0.80; + if (c1.b >= 0.80) + blue = 1; + + + if (c1.g < 0.1 && c1.g >= 0) + green = 0.1; + if (c1.g < 0.20 && c1.g >= 0.1) + green = 0.20; + if (c1.g <0.40 && c1.g >= 0.20) + green = 0.40; + if (c1.g <0.60 && c1.g >= 0.40) + green = 0.60; + if (c1.g <0.80 && c1.g >= 0.60) + green = 0.80; + if (c1.g >= 0.80) + green = 1; + +} + + + + ocol0 = float4(red, green, blue, c0.a); +} \ No newline at end of file diff --git a/32bit.txt b/32bit.txt new file mode 100644 index 0000000000..e9e0260178 --- /dev/null +++ b/32bit.txt @@ -0,0 +1,157 @@ +uniform samplerRECT samp0 : register(s0); + +void main(out float4 ocol0 : COLOR0, in float2 uv0 : TEXCOORD0) +{ + float4 c0 = texRECT(samp0, uv0).rgba; + + //Change this number to increase the pixel size. + int pixelSize = 2; + + float red = 0.0; + float green = 0.0; + float blue = 0.0; + int val = uv0[0]; + int val2 = uv0[1]; + + val = val % pixelSize; + val2 = val2 % pixelSize; + + if(val == 0 && val2 == 0 ){ + if (c0.r < 0.06 && c0.r >= 0) + red = 0.06; + if (c0.r < 0.13 && c0.r >= 0.06) + red = 0.13; + if (c0.r < 0.26 && c0.r >= 0.13) + red = 0.26; + if (c0.r < 0.33 && c0.r >= 0.26) + red = 0.33; + if (c0.r <0.46 && c0.r >= 0.33) + red = 0.46; + if (c0.r <0.60 && c0.r >= 0.46) + red = 0.60; + if (c0.r <0.73 && c0.r >= 0.60) + red = 0.73; + if (c0.r <0.80 && c0.r >= 0.73) + red = 0.80; + if (c0.r <0.93 && c0.r >= 0.80) + red = 0.93; + if (c0.r <=1 && c0.r >= 0.93) + red = 1; + + if (c0.b < 0.06 && c0.b >= 0) + blue = 0.06; + if (c0.b < 0.13 && c0.b >= 0.06) + blue = 0.13; + if (c0.b < 0.26 && c0.b >= 0.13) + blue = 0.26; + if (c0.b < 0.33 && c0.b >= 0.26) + blue = 0.33; + if (c0.b <0.46 && c0.b >= 0.33) + blue = 0.46; + if (c0.b <0.60 && c0.b >= 0.46) + blue = 0.60; + if (c0.b <0.73 && c0.b >= 0.60) + blue = 0.73; + if (c0.b <0.80 && c0.b >= 0.73) + blue = 0.80; + if( c0.b <0.93 && c0.b >= 0.80) + blue = 0.93; + if (c0.b <=1 && c0.b >= 0.93) + blue = 1; + + + if (c0.g < 0.06 && c0.g >= 0) + green = 0.06; + if (c0.g < 0.13 && c0.g >= 0.06) + green = 0.13; + if (c0.g < 0.26 && c0.g >= 0.13) + green = 0.26; + if (c0.g < 0.33 && c0.g >= 0.26) + green = 0.33; + if (c0.g <0.46 && c0.g >= 0.33) + green = 0.46; + if (c0.g <0.60 && c0.g >= 0.46) + green = 0.60; + if (c0.g <0.73 && c0.g >= 0.60) + green = 0.73; + if (c0.g <0.80 && c0.g >= 0.73) + green = 0.80; + if( c0.g <0.93 && c0.g >= 0.80) + green = 0.93; + if (c0.g <=1 && c0.g >= 0.93) + green = 1; + +} +else{ +float4 c1 = texRECT(samp0, uv0-float2(val, val2)).rgba; + + if (c1.r < 0.06 && c1.r >= 0) + red = 0.06; + if (c1.r < 0.13 && c1.r >= 0.06) + red = 0.13; + if (c1.r < 0.26 && c1.r >= 0.13) + red = 0.26; + if (c1.r < 0.33 && c1.r >= 0.26) + red = 0.33; + if (c1.r <0.46 && c1.r >= 0.33) + red = 0.46; + if (c1.r <0.60 && c1.r >= 0.46) + red = 0.60; + if (c1.r <0.73 && c1.r >= 0.60) + red = 0.73; + if (c1.r <0.80 && c1.r >= 0.73) + red = 0.80; + if (c1.r <0.93 && c1.r >= 0.80) + red = 0.93; + if (c1.r <=1 && c1.r >= 0.93) + red = 1; + + if (c1.b < 0.06 && c1.b >= 0) + blue = 0.06; + if (c1.b < 0.13 && c1.b >= 0.06) + blue = 0.13; + if (c1.b < 0.26 && c1.b >= 0.13) + blue = 0.26; + if (c1.b < 0.33 && c1.b >= 0.26) + blue = 0.33; + if (c1.b <0.46 && c1.b >= 0.33) + blue = 0.46; + if (c1.b <0.60 && c1.b >= 0.46) + blue = 0.60; + if (c1.b <0.73 && c1.b >= 0.60) + blue = 0.73; + if (c1.b <0.80 && c1.b >= 0.73) + blue = 0.80; + if( c1.b <0.93 && c1.b >= 0.80) + blue = 0.93; + if (c1.b <=1 && c1.b >= 0.93) + blue = 1; + + + if (c1.g < 0.06 && c1.g >= 0) + green = 0.06; + if (c1.g < 0.13 && c1.g >= 0.06) + green = 0.13; + if (c1.g < 0.26 && c1.g >= 0.13) + green = 0.26; + if (c1.g < 0.33 && c1.g >= 0.26) + green = 0.33; + if (c1.g <0.46 && c1.g >= 0.33) + green = 0.46; + if (c1.g <0.60 && c1.g >= 0.46) + green = 0.60; + if (c1.g <0.73 && c1.g >= 0.60) + green = 0.73; + if (c1.g <0.80 && c1.g >= 0.73) + green = 0.80; + if( c1.g <0.93 && c1.g >= 0.80) + green = 0.93; + if ( c1.g >= 0.93) + green = 1; + +} + + + + ocol0 = float4(red, green, blue, c0.a); +} \ No newline at end of file diff --git a/auto_toon2.txt b/auto_toon2.txt new file mode 100644 index 0000000000..058a839678 --- /dev/null +++ b/auto_toon2.txt @@ -0,0 +1,99 @@ +uniform samplerRECT samp0 : register(s0); + +void main(out float4 ocol0 : COLOR0, in float2 uv0 : TEXCOORD0) +{ + //Changethis to increase the number of colors. + float numColors =8; + + float4 to_gray = float4(0.3,0.59,0.11,0); + float x1 = dot(to_gray, texRECT(samp0, uv0+float2(1,1))); + float x0 = dot(to_gray, texRECT(samp0, uv0+float2(-1,-1))); + float x3 = dot(to_gray, texRECT(samp0, uv0+float2(1,-1))); + float x2 = dot(to_gray, texRECT(samp0, uv0+float2(-1,1))); + float edge = (x1 - x0) * (x1 - x0); + float edge2 = (x3 - x2) * (x3 - x2); + edge += edge2; + float4 color = texRECT(samp0, uv0).rgba; + + float4 c0 = max(color - float4(edge, edge, edge, edge) * 12, float4(0,0,0,0)); + + //Change this number to increase the pixel size. + int pixelSize = 1; + + + float red = 0.0; + float green = 0.0; + float blue = 0.0; + bool rr = false; + bool bb = false; + bool gg = false; + int val = uv0[0]; + int val2 = uv0[1]; + int count = 1; + + double colorN = 0.0; + double colorB = 0.0; + val = val % pixelSize; + val2 = val2 % pixelSize; + +//if(val == 0 && val2 == 0 ) + // c0 = texRECT(samp0, uv0).rgba; +//else + // c0 = texRECT(samp0, uv0-float2(val, val2)).rgba; + + for(count = 1; count <= numColors ; count++){ + colorN = count / numColors; + + if ( c0.r <= colorN && c0.r >= colorB && rr == false ){ + if (count == 1){ + if(colorN >= 0.1) + red = 0.01; + else + red = colorN; + } + else if (count == numColors) + red = 0.95; + else + red = colorN ; + + rr = true; + } + + if (c0.b <= colorN && c0.b >= colorB && bb == false){ + if (count == 1){ + if(colorN >= 0.1) + blue = 0.01; + else + blue = colorN; + } + else if (count == numColors) + blue = 0.95; + else + blue = colorN ; + + bb = true; + } + + if (c0.g <= colorN && c0.g >= colorB && gg == false){ + if (count == 1){ + if(colorN >= 0.1) + green = 0.01; + else + green = colorN; + } + else if (count == numColors) + green = 0.95 ; + else + green = colorN ; + gg = true; + } + + colorB = count / numColors; + if(rr == true && bb == true && gg == true) + break; + } + + + + ocol0 = float4(red, green, blue, c0.a); +} \ No newline at end of file diff --git a/darkerbrighter.txt b/darkerbrighter.txt new file mode 100644 index 0000000000..1fafe0646a --- /dev/null +++ b/darkerbrighter.txt @@ -0,0 +1,36 @@ +uniform samplerRECT samp0 : register(s0); + +void main(out float4 ocol0 : COLOR0, in float2 uv0 : TEXCOORD0) +{ + float4 c0 = texRECT(samp0, uv0).rgba; + float4 c1 = texRECT(samp0, uv0 - float2(1, 0)).rgba; + float4 c2 = texRECT(samp0, uv0 - float2(0, 1)).rgba; + float4 c3 = texRECT(samp0, uv0 + float2(1, 0)).rgba; + float4 c4 = texRECT(samp0, uv0 + float2(0, 1)).rgba; + + float red = c0.r; + float blue = c0.b; + float green = c0.g; + + float red2 = (c1.r + c2.r + c3.r + c4.r) / 4; + float blue2 = (c1.b + c2.b + c3.b + c4.b) / 4; + float green2 = (c1.g + c2.g + c3.g + c4.g) / 4; + + if(red2 > 0.3) + red = c0.r + c0.r / 2 ; + else + red = c0.r - c0.r / 2 ; + + if(green2 > 0.3) + green = c0.g+ c0.g / 2; + else + green = c0.g - c0.g / 2; + + + if(blue2 > 0.3) + blue = c0.b+ c0.b / 2 ; + else + blue = c0.b - c0.b / 2 ; + + ocol0 = float4(red, green, blue, c0.a); +} \ No newline at end of file diff --git a/primarycolors.txt b/primarycolors.txt new file mode 100644 index 0000000000..1639b941fa --- /dev/null +++ b/primarycolors.txt @@ -0,0 +1,69 @@ +uniform samplerRECT samp0 : register(s0); + +void main(out float4 ocol0 : COLOR0, in float2 uv0 : TEXCOORD0) +{ + float4 c0 = texRECT(samp0, uv0).rgba; + float red = c0.r; + float blue = c0.b; + float green = c0.g; + float factor = 2; + float max = 0.8; + float min = 0.3; + + if(c0.r > c0.g && c0.b > c0.g){ + if(c0.r < c0.b + 0.05 && c0.b < c0.r + 0.05){ + red = 0.7; + blue = 0.7; + green = 0.05; + } + else if(c0.r > c0.b + 0.05){ + red = 0.7; + blue = 0.05; + green = 0.05; + } + else if (c0.b > c0.r + 0.05){ + red = 0.05; + blue = 0.7; + green = 0.05; + } + } + + if(c0.r > c0.b && c0.g > c0.b){ + if(c0.r < c0.g + 0.05 && c0.g < c0.r + 0.05){ + red = 0.7; + blue = 0.05; + green = 0.7; + } + else if(c0.r > c0.g + 0.05){ + red = 0.7; + blue = 0.05; + green = 0.05; + } + else if (c0.g > c0.r + 0.05){ + red = 0.05; + blue = 0.05; + green = 0.7; + } + } + + if(c0.g > c0.r && c0.b > c0.r){ + if(c0.g < c0.b + 0.05 && c0.b < c0.g + 0.05){ + red = 0.05; + blue = 0.7; + green = 0.7; + } + else if(c0.g > c0.b + 0.05){ + red = 0.05; + blue = 0.05; + green = 0.7; + } + else if (c0.b > c0.g + 0.05){ + red = 0.05; + blue = 0.7; + green = 0.05; + } + } + + + ocol0 = float4(red, green, blue, c0.a); +} \ No newline at end of file