Но вот что-то он не хочет работать, помогите разобраться (ошибок при компиляции нет, но и показывать то что надо он не хочет). Предполагаемые недочеты отметил в комментариях.
В этот раз шейдер из Pixel Bender - заодно в копилку шейдерманам.
Синтаксис:
Используется glsl
Shader "ascii" {
Properties {
size ("size", Range (1, 32)) = 8
charCount ("charCount", Range (1, 512)) = 256
_MainTex ("MainTex (RGB)", 2D) = "white" {}
_FontTex ("FontTex (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
#pragma target 3.0
sampler2D _MainTex;
sampler2D _FontTex;
float size;
float charCount;
struct Input {
float2 uv_MainTex;
float2 uv_FontTex;
};
void surf (Input IN, inout SurfaceOutput o) {
float sizef = float(size);
float charCountf = float(charCount);
float2 offset2 = fmod(IN.uv_MainTex, sizef);
half4 mosaicPixel4 = tex2D(_MainTex, IN.uv_MainTex - offset2); //sampleNearest in original AsciiMii Source Code
float luma = 0.2126 * mosaicPixel4.r + 0.7152 * mosaicPixel4.g + 0.0722 * mosaicPixel4.b;
float range = (1.0 / (charCountf - 1.0));
float fontOffset = sizef * floor(luma / range);
float fontmapsize = (sizef * floor(sqrt(charCountf)));
float yRow = floor(fontOffset / fontmapsize);
offset2.y = offset2.y + (sizef * yRow);
offset2.x = offset2.x + (fontOffset - (fontmapsize * yRow));
half4 charPixel4 = tex2D (_FontTex, offset2);
o.Albedo = mosaicPixel4.rgb * charPixel4.rgb;
o.Alpha = mosaicPixel4.a;
}
ENDCG
}
FallBack "Diffuse"
}
Properties {
size ("size", Range (1, 32)) = 8
charCount ("charCount", Range (1, 512)) = 256
_MainTex ("MainTex (RGB)", 2D) = "white" {}
_FontTex ("FontTex (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
#pragma target 3.0
sampler2D _MainTex;
sampler2D _FontTex;
float size;
float charCount;
struct Input {
float2 uv_MainTex;
float2 uv_FontTex;
};
void surf (Input IN, inout SurfaceOutput o) {
float sizef = float(size);
float charCountf = float(charCount);
float2 offset2 = fmod(IN.uv_MainTex, sizef);
half4 mosaicPixel4 = tex2D(_MainTex, IN.uv_MainTex - offset2); //sampleNearest in original AsciiMii Source Code
float luma = 0.2126 * mosaicPixel4.r + 0.7152 * mosaicPixel4.g + 0.0722 * mosaicPixel4.b;
float range = (1.0 / (charCountf - 1.0));
float fontOffset = sizef * floor(luma / range);
float fontmapsize = (sizef * floor(sqrt(charCountf)));
float yRow = floor(fontOffset / fontmapsize);
offset2.y = offset2.y + (sizef * yRow);
offset2.x = offset2.x + (fontOffset - (fontmapsize * yRow));
half4 charPixel4 = tex2D (_FontTex, offset2);
o.Albedo = mosaicPixel4.rgb * charPixel4.rgb;
o.Alpha = mosaicPixel4.a;
}
ENDCG
}
FallBack "Diffuse"
}