Blend-shader для 2D освешения
Добавлено: 10 янв 2011, 12:38
Здравствуйте
Возникли проблемы с реализацией шейдера для освещения в 2d
Суть такова: имеется плейн, полностью черный, который закрывает весь экран. Его должен как бы "прорезать" другой плейн, с текстурой кругового света, то есть прорезать именно в тех местах, где текстура имеет белый цвет.
С шейдерами я не знаком, все, что я нашел, это только шейдер, который смешивает две текстуры в одном материале, но это не то, что мне надо (во-первых, он не отрезает один участок текстуры от другого, а во-вторых, хотелось бы, чтобы плейн со светом и плейн с темнотой были разными объектами-материалами)
Возникли проблемы с реализацией шейдера для освещения в 2d
Суть такова: имеется плейн, полностью черный, который закрывает весь экран. Его должен как бы "прорезать" другой плейн, с текстурой кругового света, то есть прорезать именно в тех местах, где текстура имеет белый цвет.
С шейдерами я не знаком, все, что я нашел, это только шейдер, который смешивает две текстуры в одном материале, но это не то, что мне надо (во-первых, он не отрезает один участок текстуры от другого, а во-вторых, хотелось бы, чтобы плейн со светом и плейн с темнотой были разными объектами-материалами)
Синтаксис:
Используется glsl
Shader "2 Texture Blend" {
Properties {
_Blend ("Blend", Range (0, 1)) = 0.5
_MainTex ("Base (RGB)", 2D) = "white"
_BlendTex ("Blend (RGB)", 2D) = "black"
}
SubShader {
Blend SrcAlpha OneMinusSrcAlpha
Blend DstColor Zero
Pass {
SetTexture [_MainTex]
SetTexture [_BlendTex] {
constantColor (0, 0, 0, [_Blend])
combine texture lerp (constant) previous
}
}
}
}
Properties {
_Blend ("Blend", Range (0, 1)) = 0.5
_MainTex ("Base (RGB)", 2D) = "white"
_BlendTex ("Blend (RGB)", 2D) = "black"
}
SubShader {
Blend SrcAlpha OneMinusSrcAlpha
Blend DstColor Zero
Pass {
SetTexture [_MainTex]
SetTexture [_BlendTex] {
constantColor (0, 0, 0, [_Blend])
combine texture lerp (constant) previous
}
}
}
}