Сегодня было принято решение, которое просто таки обязано популяризировать quad. Итак, quad обзаведется базой шейдеров. Как это будет выглядеть:
Monochrome:
Применение:
Quad.RenderToTexture(MyRenderTarget, True);
// Render your scene here
Quad.RenderToTexture(MyRenderTarget, False);
ShaderMonochrome.SetState(True);
MyRenderTarget.Draw(0, 0, $FFFFFFFF);
ShaderMonochrome.SetState(False); <Ссылка на бинарный файл шейдера, готовый к использованию>
Код шейдера:
sampler2D DiffuseMap : register(s0);
float4 std_PS(vertexOutput Input) : COLOR {
float4 Output;
float4 tex_diff = tex2D(DiffuseMap, Input.TexCoord);
Output = (tex_diff.r + tex_diff.g + tex_diff.b) / 3;
if (Output.r < 0.2 || Output.r > 0.8) Output.r = 0.0; else Output.r = 1.0;
if (Output.g < 0.2 || Output.g > 0.8) Output.g = 0.0; else Output.g = 1.0;
if (Output.b < 0.2 || Output.b > 0.8) Output.b = 0.0; else Output.b = 1.0;
return Output;
}
В таком духе будет большое количество шейдеров. Конечно, для простого однопроходного постпроцесс шейдера, как этот, смысла писать один и тот же код на использование особо не трубуется. Но шейдеры будут и сложнее. И объемный свет и размытие, блум, искажение картинки, процедурные текстуры, нормалмеппинг и прочее. Все пожелания прошу высказывать в комментариях, постараюсь удовлетворить.
Более того, если кто-то выразит желание помочь с пополнением базы шейдеров - милости просим!
Комментариев нет:
Отправить комментарий