Помогите! Нужно добавить тени к шейдеру дорог.

Для экспериментальных разработок и тем "я нашел чужой исходник, почему он не работает?"

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение sp00n 03 мар 2010, 13:11

Нео, а если глянуть шейдеры отсюда, и выдрать оттуда тот, который для деревьев? Деревья ведь тоже с альфой рисуются насколько я помню :-?
Ты молод, креативен, талантлив?
Амбициозен, уверен в себе, полон свежих идей?
А делать хоть что-нибудь умеешь?!
sp00n
UNITрон
 
Сообщения: 254
Зарегистрирован: 27 фев 2010, 20:43

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Neodrop 03 мар 2010, 14:13

bark ? Это же ствол. Какая там альфа?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение sp00n 03 мар 2010, 14:54

а листва? она не текстурой с альфой на плейне рисуется? и ведь тоже затеняется :-?

з.ы. глянул я скрипт для динамических теней, о котором говорил в теме про лайтмапы. увы, в данном случае он не подходит:( мое имхо что из шейдера Kann-a нужно убрать бамп и спекуляр, и мб он тогда заработает. Кстати, а шмат дороги у тебя как выглядит - один плейн с прозрачностью по бокам? если так, можно сделать его составным из трех плейнов: прозрачный-сплошной-прозрачный.
Ты молод, креативен, талантлив?
Амбициозен, уверен в себе, полон свежих идей?
А делать хоть что-нибудь умеешь?!
sp00n
UNITрон
 
Сообщения: 254
Зарегистрирован: 27 фев 2010, 20:43

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Neodrop 03 мар 2010, 15:35

Гиморно и полигонов в трое больше будет.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Kann 04 мар 2010, 12:09

угу, а если так....
кстати тени то были ?
Синтаксис:
Используется glsl
Shader "Transparent/Bumped Specular+" {
Properties {
        _Color ("Main Color", Color) = (1,1,1,1)
        _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 0)
        _Shininess ("Shininess", Range (0.01, 1)) = 0.078125
        _MainTex ("Base (RGB) TransGloss (A)", 2D) = "white" {}
        _BumpMap ("Bumpmap", 2D) = "bump" {}
}

Category {
        Tags { "IgnoreProjector"="True" "RenderType"="Transparent"  "Queue"="Transparent-100""Queue"="Geometry+100"  }
        LOD 200
        Alphatest Greater 0
        Fog { Color [_AddFog] }
        ZWrite Off
        ColorMask RGB
       
        // ------------------------------------------------------------------
        // ARB fragment program
       
        SubShader {
                UsePass "Transparent/Specular/BASE"
               
                // Pixel lights
                Pass {
                        Blend SrcAlpha OneMinusSrcAlpha
                        Name "PPL"
                        Tags { "LightMode" = "Pixel" }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_builtin
#pragma fragmentoption ARB_fog_exp2
#pragma fragmentoption ARB_precision_hint_fastest

#include "UnityCG.cginc"
#include "AutoLight.cginc"

struct v2f {
        V2F_POS_FOG;
        LIGHTING_COORDS
        float3  uvK; // xy = UV, z = specular K
        float2  uv2;
        float3  viewDirT;
        float3  lightDirT;
};

uniform float4 _MainTex_ST, _BumpMap_ST;
uniform float _Shininess;


v2f vert (appdata_tan v)
{      
        v2f o;
        PositionFog( v.vertex, o.pos, o.fog );
        o.uvK.xy = TRANSFORM_TEX(v.texcoord,_MainTex);
        o.uvK.z = _Shininess * 128;
        o.uv2 = TRANSFORM_TEX(v.texcoord,_BumpMap);

        TANGENT_SPACE_ROTATION;
        o.lightDirT = mul( rotation, ObjSpaceLightDir( v.vertex ) );   
        o.viewDirT = mul( rotation, ObjSpaceViewDir( v.vertex ) );     
       
        TRANSFER_VERTEX_TO_FRAGMENT(o);
        return o;
}

uniform sampler2D _BumpMap;
uniform sampler2D _MainTex;
uniform float4 _Color;

float4 frag (v2f i) : COLOR
{              
        float4 texcol = tex2D( _MainTex, i.uvK.xy );
       
        // get normal from the normal map
        float3 normal = tex2D(_BumpMap, i.uv2).xyz * 2 - 1;
       
        half4 c = SpecularLight( i.lightDirT, i.viewDirT, normal, texcol, i.uvK.z, LIGHT_ATTENUATION(i) );
        c.a = texcol.a * _Color.a;
        return c;
}
ENDCG  
                }
       
       
                       
        }
}

FallBack "VertexLit", 1

}
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Neodrop 04 мар 2010, 12:18

Я же вроде прикрепил скрин... Нифига небыло теней.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Kann 04 мар 2010, 12:31

я на том скриншоте не понял от чего должны были падать тени, от проводов ?
вообще конечно непонятная фигня творится с тенями.... у себя чето не получается смоделировать такую ситуацию.....
test.jpeg
У вас нет доступа для просмотра вложений в этом сообщении.
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Neodrop 04 мар 2010, 14:08

Отлично, Канн! Зарряботала!
А можешь то же самое, но для банально диффуза, чтобы полегче шейдер рендерился ? :ympray:

Изображение
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Neodrop 04 мар 2010, 14:56

Ой... Чего то неладно с этим шейдером в Z сортировке... Второстепенные дороги, которые на картинке внахлёст, на самом деле лежат под главной дорогой, а рисуются, почему то, поверх. :(

Изображение
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Kann 04 мар 2010, 16:02

скорей всего из за этой строчки
Код: Выделить всё
ZWrite Off

попробуй или закоментить ее или включить, ZWrite On
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Neodrop 04 мар 2010, 16:08

А, Блин! Так я же писал в первом посте, что мне обязательно сортировка нужна :D
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Neodrop 04 мар 2010, 16:20

Опять бяда...

Изображение
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение sp00n 04 мар 2010, 16:44

Это как бэ главная дорога на второстепенную тень бросает? :-? а если у дорог отключить возможность отбрасывать тени?
Ты молод, креативен, талантлив?
Амбициозен, уверен в себе, полон свежих идей?
А делать хоть что-нибудь умеешь?!
sp00n
UNITрон
 
Сообщения: 254
Зарегистрирован: 27 фев 2010, 20:43

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Neodrop 04 мар 2010, 17:22

Уф... Ну не настолько я баран. Отключена конечно.

Насколько я понимаю, это инверсия альфы. Отчего она происходит, я без понятия. :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Помогите! Нужно добавить тени к шейдеру дорог.

Сообщение Kann 04 мар 2010, 22:54

Мдя.... че делать хз.....
вот последний финт ушами придумал... не знаю будет ли работать или нет.... у меня на простейшей сценке вроде сносно....
vertex.jpg


Код: Выделить всё
Shader "Transparent/Bumped Specular+" {
Properties {
        _Color ("Main Color", Color) = (1,1,1,1)
        _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 0)
        _Shininess ("Shininess", Range (0.01, 1)) = 0.078125
        _MainTex ("Base (RGB) TransGloss (A)", 2D) = "white" {}
        _BumpMap ("Bumpmap", 2D) = "bump" {}
}

Category {
        Tags { "IgnoreProjector"="True" "RenderType"="Transparent"   "Queue"="Transparent-100" }
        LOD 200
        Alphatest Greater 0
        Fog { Color [_AddFog] }
        ZWrite On
        ColorMask RGB
     

        // ------------------------------------------------------------------
        // ARB fragment program
       
        SubShader {
                UsePass "Transparent/Specular/BASE"
               
                // Pixel lights
                Pass {
                       Blend SrcAlpha OneMinusSrcAlpha
               
                        Name "PPL"
                        Tags { "LightMode" = "VertexOnly" }
                  
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_builtin
#pragma fragmentoption ARB_fog_exp2
#pragma fragmentoption ARB_precision_hint_fastest

#include "UnityCG.cginc"
#include "AutoLight.cginc"

struct v2f {
        V2F_POS_FOG;
        LIGHTING_COORDS
        float3  uvK; // xy = UV, z = specular K
        float2  uv2;
        float3  viewDirT;
        float3  lightDirT;
};

uniform float4 _MainTex_ST, _BumpMap_ST;
uniform float _Shininess;


v2f vert (appdata_tan v)
{     
        v2f o;
        PositionFog( v.vertex, o.pos, o.fog );
        o.uvK.xy = TRANSFORM_TEX(v.texcoord,_MainTex);
        o.uvK.z = _Shininess * 128;
        o.uv2 = TRANSFORM_TEX(v.texcoord,_BumpMap);

        TANGENT_SPACE_ROTATION;
        o.lightDirT = mul( rotation, ObjSpaceLightDir( v.vertex ) );   
        o.viewDirT = mul( rotation, ObjSpaceViewDir( v.vertex ) );     
       
        TRANSFER_VERTEX_TO_FRAGMENT(o);
        return o;
}

uniform sampler2D _BumpMap;
uniform sampler2D _MainTex;
uniform float4 _Color;

float4 frag (v2f i) : COLOR
{             
        float4 texcol = tex2D( _MainTex, i.uvK.xy );
       
        // get normal from the normal map
        float3 normal = tex2D(_BumpMap, i.uv2).xyz * 2 - 1;
       
        half4 c = SpecularLight( i.lightDirT, i.viewDirT, normal, texcol, i.uvK.z, LIGHT_ATTENUATION(i) );
        c.a = texcol.a * _Color.a;
        return c;
}
ENDCG 
                }
       
       
                       
        }
}

FallBack "VertexLit", 1

}
У вас нет доступа для просмотра вложений в этом сообщении.
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Пред.След.

Вернуться в Шейдерная кузня

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

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