Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Вопросы от новичка
Неожиданно
Это(SimpleWater+Alpha)

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 { "Queue"="Transparent" "RenderType"="Transparent" } Blend SrcAlpha OneMinusSrcAlpha ColorMask RGB Pass { //Blend SrcAlpha OneMinusSrcAlpha //ColorMask RGB CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma fragmentoption ARB_precision_hint_fastest //#pragma surface surf Lambert alpha
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 )*_horizonColor.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 } } }
}
+ Это(Outline):

Shader "Outlined/Silhouetted Diffuse" { Properties { _Color ("Main Color", Color) = (.5,.5,.5,1) _OutlineColor ("Outline Color", Color) = (0,0,0,1) _Outline ("Outline width", Range (0.0, 0.03)) = .005 _MainTex ("Base (RGB)", 2D) = "white" { } } CGINCLUDE #include "UnityCG.cginc"
struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; };
struct v2f { float4 pos : POSITION; float4 color : COLOR; };
uniform float _Outline; uniform float4 _OutlineColor;
v2f vert(appdata v) { // just make a copy of incoming vertex data but scaled according to normal direction v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal); float2 offset = TransformViewToProjection(norm.xy);
o.pos.xy += offset * o.pos.z * _Outline; o.color = _OutlineColor; return o; } ENDCG
SubShader { Tags { "Queue" = "Transparent" }
// note that a vertex shader is specified here but its using the one above Pass { Name "OUTLINE" Tags { "LightMode" = "Always" } Cull Off ZWrite Off ZTest LEqual ColorMask RGB // alpha not used
// you can choose what kind of blending mode you want for the outline Blend SrcAlpha OneMinusSrcAlpha // Normal //Blend One One // Additive //Blend One OneMinusDstColor // Soft Additive //Blend DstColor Zero // Multiplicative //Blend DstColor SrcColor // 2x Multiplicative
CGPROGRAM #pragma vertex vert #pragma fragment frag
half4 frag(v2f i) :COLOR { return i.color; } ENDCG }
Pass { Name "BASE" ZWrite On ZTest LEqual Blend SrcAlpha OneMinusSrcAlpha Material { Diffuse [_Color] Ambient [_Color] } Lighting On SetTexture [_MainTex] { ConstantColor [_Color] Combine texture * constant } SetTexture [_MainTex] { Combine previous * primary DOUBLE } } } SubShader { Tags { "Queue" = "Transparent" }
Pass { Name "OUTLINE" Tags { "LightMode" = "Always" } Cull Front ZWrite Off ZTest Always ColorMask RGB
// you can choose what kind of blending mode you want for the outline Blend SrcAlpha OneMinusSrcAlpha // Normal //Blend One One // Additive //Blend One OneMinusDstColor // Soft Additive //Blend DstColor Zero // Multiplicative //Blend DstColor SrcColor // 2x Multiplicative
CGPROGRAM #pragma vertex vert #pragma exclude_renderers gles xbox360 ps3 ENDCG SetTexture [_MainTex] { combine primary } }
Pass { Name "BASE" ZWrite On ZTest LEqual Blend SrcAlpha OneMinusSrcAlpha Material { Diffuse [_Color] Ambient [_Color] } Lighting On SetTexture [_MainTex] { ConstantColor [_Color] Combine texture * constant } SetTexture [_MainTex] { Combine previous * primary DOUBLE } } } Fallback "Diffuse" }
=

Знающие, подскажите где исправить, желательно без последствий.=)
|