Jump to content
Unity Insider Forum

Schnee-Shader


Sascha
 Share

Recommended Posts

Ich habe gerade einen kleinen Schneeshader gebastelt...

Bin mir nicht sicher, ob es so etwas nicht schon gibt.

Ist grafisch alles andere als ausgefallen, es tut lediglich folgendes:

  • Er nimmt eine Diffuse- und eine Schneetextur
  • Dazu zwei Zahlen (Schneemenge und Extrusion Amount)
  • Je mehr die Normale der Fläche nach oben zeigt, umso mehr Schnee liegt darauf (aka. Schneetextur statt der normalen)
  • Je mehr Schnee liegt, umso mehr wird der Vertex nach oben verschoben (simuliert, dass der Schnee ja auch Masse hat)

Sieht dann so aus:

ohne schnee.pngwenig schnee.pngmit schnee.png

 

Der Shader ist ganz kurz, bitte schön:

Shader "Snow/Diffuse"
{
Properties
{
 _MainTex ("Base (RGB)", 2D) = "white" {}
	_Snow ("Snow (RGB)", 2D) = "white" {}
	_Amount ("Snow Amount", Range(0,1)) = 0.5
	_Extrusion ("Extrusion Amount", Range(0,1)) = 0.5
}
SubShader
{
	Tags { "RenderType" = "Opaque" }

	CGPROGRAM
		#pragma surface surf Lambert vertex:vert

		struct Input
		{
			float2 uv_MainTex;
		    float2 uv_Snow;
			float snow;
		};

		float _Amount;
		float _Extrusion;

		void vert (inout appdata_full v, out Input o)
		{
			float snow = max(0, v.normal.y) * _Amount;
			v.vertex.y += snow * _Extrusion;

			UNITY_INITIALIZE_OUTPUT(Input, o);
			o.snow = snow;
		}

		sampler2D _MainTex;
		sampler2D _Snow;

		void surf (Input IN, inout SurfaceOutput o)
		{
			half3 main = tex2D (_MainTex, IN.uv_MainTex).rgb;
			half3 snow = tex2D (_Snow, IN.uv_Snow).rgb;
			o.Albedo = lerp(main, snow, min(1, IN.snow * 10));
		}
	ENDCG
}
FallBack "Diffuse"
}

Vielleicht peppt man den grafisch nochmal irgendwie auf... aber mehr hab ich erstmal nicht gemacht :)

  • Like 8
Link to comment
Share on other sites

  • 6 months later...
  • 6 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...