Тема: Диваны
Показать сообщение отдельно
Старый 07.10.2010, 23:37   #23
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Диваны

Первый мой шейдер был с использованием сурфейсной техники юнити, как оказалось я пока не до конца понимаю как она генерит шейдеры и блики там сделать вообще не получилось.
Сейчас шейдер переписал заново вот так:
Shader "Divan/DiffuseSpecularNew" {
Properties {
    
_Color ("Main Color"Color) = (1,1,1,1)
    
_SpecColor ("Specular Color"Color) = (0.50.50.51)
    
_Shininess ("Shininess"Range (0.011)) = 0.8    
    _MainTex 
("Base (RGB) Gloss (A)"2D) = "white" {}
    
_LightMap ("Lightmap (RGB)"2D) = "white" {}
    
_LightMap2 ("Lightmap2 (RGB)"2D) = "white" {}
    
_LightMapT ("LightmapT"Range (0.01)) = 0.0 
}

SubShader {
    
LOD 200
    Tags 
"RenderType" "Opaque" }
    
Pass{
        
CGPROGRAM
        
#pragma vertex vert
        #pragma fragment frag

        #include "UnityCG.cginc" 

        
sampler2D _MainTex;
        
sampler2D _LightMap;
        
sampler2D _LightMap2;
        
float4 _Color;
        
float4 _SpecColor;
        
float _LightMapT;
        
float _Shininess;
        
float4x4 _MainTexMatrix;

        
struct appdata
        
{
            
float4 vertex   POSITION;
            
float4 texcoord TEXCOORD0;
            
float4 texcoord1TEXCOORD1;
            
float4 normal   NORMAL;
        };

        
struct v2f {
          
float4 pos POSITION;
          
float4 uv  TEXCOORD0;
          
float4 uv2 TEXCOORD1;
          
float4 normal TEXCOORD2;
          
float3 lightDir TEXCOORD3;
          
float3 viewDir  TEXCOORD4;
        };


        
v2f vert (appdata v
        {
            
v2f o;
            
o.pos mulUNITY_MATRIX_MVPv.vertex );
            
o.uv mul(_MainTexMatrixv.texcoord);
            
o.uv2 v.texcoord1;
            
o.normal v.normal;
            
o.lightDir ObjSpaceLightDirv.vertex );
            
o.viewDir ObjSpaceViewDirv.vertex );
            return 
o;
        }

        
half4 fragv2f i ) : COLOR {
            
half4 mainColor tex2D(_MainTexi.uv.xy);
            
half4 c = ((_LightMapT) * tex2D (_LightMapi.uv2.xy) + _LightMapT tex2D (_LightMap2i.uv2.xy) ) * mainColor;
           
            
half3 h normalize (i.lightDir i.viewDir);
            
float nh max (0dot (i.normalh));
            
float spec pow (nhmainColor.48) * _Shininess;
            
            return 
_Color spec _SpecColor;
        }


        
ENDCG
    
}
}

FallBack "Divan/VertexLit"


UPD: такое чувство, что шейдер считает положение камеры и источника в одном месте, и источник точечный... хотя должен быть направленный...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием