Water (Basic) как изменить прозрачность воды?

Шейдеры и все-все-все.

Water (Basic) как изменить прозрачность воды?

Сообщение qmaks 03 май 2011, 11:46

В параметре материала есть задаваемый цвет Horizon Color, но изменение его альфы не приводит к изменению прозрачности воды.
Открыл шейдер в нем явна написанно :
Синтаксис:
Используется csharp
half4 frag( v2f i ) : COLOR
{
        half3 bump1 = UnpackNormal(tex2D( _BumpMap, i.bumpuv[0] )).rgb;
        half3 bump2 = UnpackNormal(tex2D( _BumpMap, i.bumpuv[1] )).rgb;
        half3 bump = (bump1 + bump2) * 0.5;
       
        half fresnel = dot( i.viewDir, bump );
        half4 water = tex2D( _ColorControl, float2(fresnel,fresnel) );
       
        half4 col;
        col.rgb = lerp( water.rgb, _horizonColor.rgb, water.a );
        col.a = _horizonColor.a;    // !!!ТУТ явно задается!!!
        return col;
}


То-есть альфа все таки берется из этого цвета, но к изменению прозрачности это не приводит, кто знает в чем может быть причина?
qmaks
UNIт
 
Сообщения: 57
Зарегистрирован: 03 окт 2010, 23:07

Re: Water (Basic) как изменить прозрачность воды?

Сообщение gnoblin 03 май 2011, 12:11

нужно видеть шейдер целиком :)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Water (Basic) как изменить прозрачность воды?

Сообщение qmaks 03 май 2011, 12:30

Вот целиком

Синтаксис:
Используется csharp
Shader "FX/Water (simple)" {
Properties {
        _horizonColor ("Horizon color", COLOR)  = ( .172 , .463 , .435 , 0)
        _WaveScale ("Wave scale", Range (0.02,0.15)) = .07
        _ColorControl ("Reflective color (RGB) fresnel (A) ", 2D) = "" { }
        _ColorControlCube ("Reflective color cube (RGB) fresnel (A) ", Cube) = "" { TexGen CubeReflect }
        _BumpMap ("Waves Normalmap ", 2D) = "" { }
        WaveSpeed ("Wave speed (map1 x,y; map2 x,y)", Vector) = (19,9,-16,-7)
        _MainTex ("Fallback texture", 2D) = "" { }
}

CGINCLUDE
// -----------------------------------------------------------
// This section is included in all program sections below

#include "UnityCG.cginc"

uniform float4 _horizonColor;

uniform float4 WaveSpeed;
uniform float _WaveScale;
uniform float4 _WaveOffset;

struct appdata {
        float4 vertex : POSITION;
        float3 normal : NORMAL;
};

struct v2f {
        float4 pos : SV_POSITION;
        float2 bumpuv[2] : TEXCOORD0;
        float3 viewDir : TEXCOORD2;
};

v2f vert(appdata v)
{
        v2f o;
        float4 s;

        o.pos = mul (UNITY_MATRIX_MVP, v.vertex);

        // scroll bump waves
        float4 temp;
        temp.xyzw = v.vertex.xzxz * _WaveScale / unity_Scale.w + _WaveOffset;
        o.bumpuv[0] = temp.xy * float2(.4, .45);
        o.bumpuv[1] = temp.wz;

        // object space view direction
        o.viewDir.xzy = normalize( ObjSpaceViewDir(v.vertex) );

        return o;
}

ENDCG
       
// -----------------------------------------------------------
// Fragment program

Subshader {
        Tags { "RenderType"="Opaque" }
        Pass {

CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest

sampler2D _BumpMap;
sampler2D _ColorControl;

half4 frag( v2f i ) : COLOR
{
        half3 bump1 = UnpackNormal(tex2D( _BumpMap, i.bumpuv[0] )).rgb;
        half3 bump2 = UnpackNormal(tex2D( _BumpMap, i.bumpuv[1] )).rgb;
        half3 bump = (bump1 + bump2) * 0.5;
       
        half fresnel = dot( i.viewDir, bump );
        half4 water = tex2D( _ColorControl, float2(fresnel,fresnel) );
       
        half4 col;
        col.rgb = lerp( water.rgb, _horizonColor.rgb, water.a );
        col.a = _horizonColor.a;
        return col;
}
ENDCG
        }
}

// -----------------------------------------------------------
//  Old cards

// three texture, cubemaps
Subshader {
        Tags { "RenderType"="Opaque" }
        Pass {
                Color (0.5,0.5,0.5,0.5)
                SetTexture [_MainTex] {
                        Matrix [_WaveMatrix]
                        combine texture * primary
                }
                SetTexture [_MainTex] {
                        Matrix [_WaveMatrix2]
                        combine texture * primary + previous
                }
                SetTexture [_ColorControlCube] {
                        combine texture +- previous, primary
                        Matrix [_Reflection]
                }
        }
}

// dual texture, cubemaps
Subshader {
        Tags { "RenderType"="Opaque" }
        Pass {
                Color (0.5,0.5,0.5,0.5)
                SetTexture [_MainTex] {
                        Matrix [_WaveMatrix]
                        combine texture
                }
                SetTexture [_ColorControlCube] {
                        combine texture +- previous, primary
                        Matrix [_Reflection]
                }
        }
}

// single texture
Subshader {
        Tags { "RenderType"="Opaque" }
        Pass {
                Color (0.5,0.5,0.5,0)
                SetTexture [_MainTex] {
                        Matrix [_WaveMatrix]
                        combine texture, primary
                }
        }
}

}
qmaks
UNIт
 
Сообщения: 57
Зарегистрирован: 03 окт 2010, 23:07

Re: Water (Basic) как изменить прозрачность воды?

Сообщение gnoblin 03 май 2011, 23:45

шейдер непрозрачный.

можно подсмотреть как делают полупрозрачность в другом стандартном шейдере и внести корректировки.
У меня времени помочь пока нету (*) .
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт


Вернуться в Shader Lab

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

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