Iphone Vertex color 2 texture blending + Unity lightmap

Шейдерлаб (fixed function pipeline) и cg\glsl шейдеры для OpenGL ES 2.0 для мобилок

Iphone Vertex color 2 texture blending + Unity lightmap

Сообщение Stalker_23b 30 янв 2011, 18:18

Вот наваял fixed pipe шейдер для блендинга 2х текстур посредством альфы вертексколора + штатный лайтмеп.
Сам вертексколор должен быть равен 0,0,0, блендингом рулит альфа. Если знаете как это поправить, подскажите плз!
Поддерживается OGLES1.1 и 2.0

Изображение
Синтаксис:
Используется glsl
Shader "Stalker/Mobile Layered VertexColor" {
        Properties {
                _Color ("Main Color", Color) = (1,1,1,1)
                _MainTex ("Base (RGB)", 2D) = "white" {}
                _Detail ("Detail (RGB)", 2D) = "gray" {}
        }
        SubShader {
       
        Pass {
                Tags { "LightMode" = "Vertex" }
               
                BindChannels {
                        Bind "Vertex", vertex
                        Bind "Color", color
                        Bind "texcoord", texcoord0 // lightmap uses 2nd uv
                        Bind "texcoord", texcoord1 // unused
                }
               
        Lighting Off
        Fog { Mode Off }               
               
                SetTexture [_MainTex] {
                        combine texture
                }
                SetTexture [_Detail] {
                        combine  texture lerp(primary) previous, previous
                }
        }      
               
        Pass {
                Tags { "LightMode" = "VertexLM" }
               
                BindChannels {
                        Bind "Vertex", vertex
                        Bind "Color", color
                        Bind "texcoord", texcoord0 // lightmap uses 2nd uv
                        Bind "texcoord", texcoord1 // main uses 1st uv
                        Bind "texcoord1", texcoord2 // main uses 1st uv
                }
               
        ColorMaterial AmbientAndDiffuse
        Lighting Off
        Fog { Mode Off }               
       
                SetTexture [_MainTex] {
                        combine texture
                }
                SetTexture [_Detail] {
                        combine texture lerp(primary) previous, previous
                }        
                SetTexture [unity_Lightmap] {
                        matrix [unity_LightmapMatrix]
                        combine previous * texture Double, previous
                }
                SetTexture [_] {
                        constantColor [_Color]
                        combine previous * constant, previous
                }
        }
       
        // Lightmapped, encoded as RGBM
        Pass {
                Tags { "LightMode" = "VertexLMRGBM" }
               
                BindChannels {
                        Bind "Vertex", vertex
                        Bind "Color", color
                        Bind "texcoord", texcoord0 // lightmap uses 2nd uv
                        Bind "texcoord", texcoord1 // unused
                        Bind "texcoord1", texcoord2 // main uses 1st uv
                }
               
        Lighting Off
        Fog { Mode Off }               
               
                SetTexture [_MainTex] {
                        combine texture
                }
                SetTexture [_Detail] {
                        combine  texture lerp(primary) previous, previous
                }
                SetTexture [unity_Lightmap] {
                        matrix [unity_LightmapMatrix]
                        combine previous * texture alpha QUAD, previous
                }
                SetTexture [_] {
                        constantColor [_Color]
                        combine previous * constant
                }
        }      

        }
        //FallBack "VertexLit", 2
}
 
Monodevelop FTW
Аватара пользователя
Stalker_23b
UNIт
 
Сообщения: 62
Зарегистрирован: 02 авг 2010, 14:23

Re: Iphone Vertex color 2 texture blending + Unity lightmap

Сообщение Zaicheg 30 янв 2011, 19:42

Помочь вряд ли чем смогу, у меня наоборот вопрос.
На него точно можно через Beast запечь лайтмапу? У меня не получилось. Хотя я вообще этот процесс смутно представляю, но такой же алгоритм действий (ИС с тенями, кубик над ландшафтом, всё Static, Beast -> Bake) с обычным шейдером Diffuse дал лайтмапу.
Кстати, а почему именно вертекс-колор? Я так понимаю, что тут больше двух текстур не смешать, раз информация берётся из альфы. Я использую карту-текстуру с альфой -- их можно и несколько положить. Только лайтмапу сделать не могу себе -- поэтому и вашим шейдером заинтересовался. Но не понимаю шейдеры совершенно, хотел кусок просто выдрать и обломался.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Iphone Vertex color 2 texture blending + Unity lightmap

Сообщение Stalker_23b 30 янв 2011, 19:58

Вертекс колор - чтобы не тащить в шейдер еще одну текстуру - маску.

Вообще должно работать, вы на какой платформе проверяете? По идее - посчитал лайтмеп, поставил колор в шейдере не черный, выбрал текстуру - должно работать...
Monodevelop FTW
Аватара пользователя
Stalker_23b
UNIт
 
Сообщения: 62
Зарегистрирован: 02 авг 2010, 14:23

Re: Iphone Vertex color 2 texture blending + Unity lightmap

Сообщение Zaicheg 30 янв 2011, 20:52

Да, работает -- я просто тень не разглядел.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Iphone Vertex color 2 texture blending + Unity lightmap

Сообщение Zaicheg 30 янв 2011, 21:47

Кстати, у тебя в одном из Pass аж четыре SetTexture. Старые девайсы вроде не больше двух на проход держат (раз уж ты в FFP реализуешь).
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Iphone Vertex color 2 texture blending + Unity lightmap

Сообщение Stalker_23b 30 янв 2011, 22:23

Это верно, но таргет - IPhone 4\3gs на OGL 1.1, там все ок.
Monodevelop FTW
Аватара пользователя
Stalker_23b
UNIт
 
Сообщения: 62
Зарегистрирован: 02 авг 2010, 14:23


Вернуться в Mobile shaders

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1