Unity Shader-真实下雨路面

Unity Shader-真实下雨路面

  • 简介
  • 素材
    • 1.准备插件Amplify Shader Editor(这里我使用的是1.6.4最新版)
    • 2.贴纸和切图d
  • 一、创建一个Shader Surface,实现气泡播放效果
  • 二、叠加一次气泡播放效果,使其看起来更多,更无序
  • 三、小波浪,无序
  • 四、将做好的三替换二中的Scale
  • 五、添加实物Albedo和Normal
  • 六、最终连线
  • 七、代码如下

简介

根据YouToBe => PolyToots实现
效果:
在这里插入图片描述
在这里插入图片描述

素材

1.准备插件Amplify Shader Editor(这里我使用的是1.6.4最新版)

2.贴纸和切图d

水波纹法线切图
大大
地板法线切图
在这里插入图片描述
地板贴图
在这里插入图片描述

一、创建一个Shader Surface,实现气泡播放效果

Time的Scale值为1
Flipbook UV Animation(插件自带方法循环播放区域材质)值设置如图
在这里插入图片描述
效果如下:动态气泡循环播放
在这里插入图片描述

二、叠加一次气泡播放效果,使其看起来更多,更无序

其中的Divide的B值为0.6,无序效果
Scale为波纹大小0为无波纹,加大波纹加深
Blend Normals将两次效果叠加
在这里插入图片描述

三、小波浪,无序

上下两层方向分别不同,上层Panner为1,1 下层Panner为-1,-1
Ripple Mask Speed为波浪遮罩的播放速度
在这里插入图片描述

四、将做好的三替换二中的Scale

如图所示

在这里插入图片描述

五、添加实物Albedo和Normal

Albedo
Tiling 文理大小
在这里插入图片描述

Normal(使其发现文理进行移动:波纹)
Puddle Speed是速度
Puddle Strength波纹深度
在这里插入图片描述

六、最终连线

在这里插入图片描述

七、代码如下

如果不适用插件,可以将下述注释删除

// Made with Amplify Shader Editor
// Available at the Unity Asset Store - http://u3d.as/y3X
Shader “Rain/Test”
{
Properties
{
_Texture0(“Texture 0”, 2D) = “bump” {}
_RippleTiling(“Ripple Tiling”, Float) = 12
_Albedo(“Albedo”, 2D) = “white” {}
_AmbientOcclusion(“Ambient Occlusion”, 2D) = “white” {}
_RippleSpeed(“Ripple Speed”, Float) = 12
_NormalMap(“Normal Map”, 2D) = “bump” {}
_Wetness(“Wetness”, Range( 0 , 1)) = 0.766323
_RippleXY(“Ripple XY”, Vector) = (0,0,0,0)
_PubbleNormals(“Pubble Normals”, 2D) = “bump” {}
_RippleMaskSpeed(“Ripple Mask Speed”, Float) = 0.32
_Tint(“Tint”, Color) = (1,1,1,0)
_Tilling(“Tilling”, Float) = 1
_RippleStrength(“Ripple Strength”, Float) = 1
_PuddleTiling(“Puddle Tiling”, Float) = 0.5
_PuddleStrength(“Puddle Strength”, Float) = 0.02
_PuddleSpeed(“Puddle Speed”, Float) = 0
[HideInInspector] _texcoord( “”, 2D ) = “white” {}
[HideInInspector] __dirty( “”, Int ) = 1
}

SubShader
{
	Tags{ "RenderType" = "Opaque"  "Queue" = "Geometry+0" }
	Cull Back
	CGPROGRAM
	#include "UnityStandardUtils.cginc"
	#include "UnityShaderVariables.cginc"
	#pragma target 3.0
	#pragma surface surf Standard keepalpha addshadow fullforwardshadows 
	struct Input
	{
		float2 uv_texcoord;
	};

	uniform sampler2D _NormalMap;
	uniform float _Tilling;
	uniform sampler2D _Texture0;
	uniform float _RippleStrength;
	uniform float _RippleMaskSpeed;
	uniform float _RippleTiling;
	uniform float _RippleSpeed;
	uniform float2 _RippleXY;
	uniform sampler2D _PubbleNormals;
	uniform float _PuddleStrength;
	uniform float _PuddleSpeed;
	uniform float _PuddleTiling;
	uniform sampler2D _Albedo;
	uniform sampler2D _AmbientOcclusion;
	uniform float4 _Tint;
	uniform float _Wetness;


	float3 mod2D289( float3 x ) { return x - floor( x * ( 1.0 / 289.0 ) ) * 289.0; }

	float2 mod2D289( float2 x ) { return x - floor( x * ( 1.0 / 289.0 ) ) * 289.0; }

	float3 permute( float3 x ) { return mod2D289( ( ( x * 34.0 ) + 1.0 ) * x ); }

	float snoise( float2 v )
	{
		const float4 C = float4( 0.211324865405187, 0.366025403784439, -0.577350269189626, 0.024390243902439 );
		float2 i = floor( v + dot( v, C.yy ) );
		float2 x0 = v - i + dot( i, C.xx );
		float2 i1;
		i1 = ( x0.x > x0.y ) ? float2( 1.0, 0.0 ) : float2( 0.0, 1.0 );
		float4 x12 = x0.xyxy + C.xxzz;
		x12.xy -= i1;
		i = mod2D289( i );
		float3 p = permute( permute( i.y + float3( 0.0, i1.y, 1.0 ) ) + i.x + float3( 0.0, i1.x, 1.0 ) );
		float3 m = max( 0.5 - float3( dot( x0, x0 ), dot( x12.xy, x12.xy ), dot( x12.zw, x12.zw ) ), 0.0 );
		m = m * m;
		m = m * m;
		float3 x = 2.0 * frac( p * C.www ) - 1.0;
		float3 h = abs( x ) - 0.5;
		float3 ox = floor( x + 0.5 );
		float3 a0 = x - ox;
		m *= 1.79284291400159 - 0.85373472095314 * ( a0 * a0 + h * h );
		float3 g;
		g.x = a0.x * x0.x + h.x * x0.y;
		g.yz = a0.yz * x12.xz + h.yz * x12.yw;
		return 130.0 * dot( m, g );
	}


	void surf( Input i , inout SurfaceOutputStandard o )
	{
		float2 temp_cast_0 = (_Tilling).xx;
		float2 uv_TexCoord64 = i.uv_texcoord * temp_cast_0;
		float3 NormalMap69 = UnpackNormal( tex2D( _NormalMap, uv_TexCoord64 ) );
		float temp_output_36_0 = ( _Time.y * _RippleMaskSpeed );
		float RippleTiling14 = _RippleTiling;
		float2 temp_cast_1 = (RippleTiling14).xx;
		float2 uv_TexCoord37 = i.uv_texcoord * temp_cast_1;
		float2 panner40 = ( temp_output_36_0 * float2( 1,1 ) + uv_TexCoord37);
		float simplePerlin2D41 = snoise( panner40 );
		float2 temp_cast_2 = (RippleTiling14).xx;
		float2 uv_TexCoord38 = i.uv_texcoord * temp_cast_2;
		float2 panner39 = ( temp_output_36_0 * float2( -1,-1 ) + uv_TexCoord38);
		float simplePerlin2D42 = snoise( panner39 );
		float RippleMask46 = ( _RippleStrength * ( simplePerlin2D41 + simplePerlin2D42 ) );
		float2 temp_cast_3 = (RippleTiling14).xx;
		float2 uv_TexCoord4 = i.uv_texcoord * temp_cast_3;
		float4 appendResult11 = (float4(frac( uv_TexCoord4.x ) , frac( uv_TexCoord4.y ) , 0.0 , 0.0));
		float temp_output_7_0 = ( _Time.y * _RippleSpeed );
		// *** BEGIN Flipbook UV Animation vars ***
		// Total tiles of Flipbook Texture
		float fbtotaltiles2 = 4.0 * 4.0;
		// Offsets for cols and rows of Flipbook Texture
		float fbcolsoffset2 = 1.0f / 4.0;
		float fbrowsoffset2 = 1.0f / 4.0;
		// Speed of animation
		float fbspeed2 = temp_output_7_0 * 1.0;
		// UV Tiling (col and row offset)
		float2 fbtiling2 = float2(fbcolsoffset2, fbrowsoffset2);
		// UV Offset - calculate current tile linear index, and convert it to (X * coloffset, Y * rowoffset)
		// Calculate current tile linear index
		float fbcurrenttileindex2 = round( fmod( fbspeed2 + 0.0, fbtotaltiles2) );
		fbcurrenttileindex2 += ( fbcurrenttileindex2 < 0) ? fbtotaltiles2 : 0;
		// Obtain Offset X coordinate from current tile linear index
		float fblinearindextox2 = round ( fmod ( fbcurrenttileindex2, 4.0 ) );
		// Multiply Offset X by coloffset
		float fboffsetx2 = fblinearindextox2 * fbcolsoffset2;
		// Obtain Offset Y coordinate from current tile linear index
		float fblinearindextoy2 = round( fmod( ( fbcurrenttileindex2 - fblinearindextox2 ) / 4.0, 4.0 ) );
		// Reverse Y to get tiles from Top to Bottom
		fblinearindextoy2 = (int)(4.0-1) - fblinearindextoy2;
		// Multiply Offset Y by rowoffset
		float fboffsety2 = fblinearindextoy2 * fbrowsoffset2;
		// UV Offset
		float2 fboffset2 = float2(fboffsetx2, fboffsety2);
		// Flipbook UV
		half2 fbuv2 = appendResult11.xy * fbtiling2 + fboffset2;
		// *** END Flipbook UV Animation vars ***
		float2 temp_cast_5 = (( RippleTiling14 / 0.6 )).xx;
		float2 uv_TexCoord29 = i.uv_texcoord * temp_cast_5 + _RippleXY;
		float4 appendResult25 = (float4(frac( uv_TexCoord29.x ) , frac( uv_TexCoord29.y ) , 0.0 , 0.0));
		float fbtotaltiles26 = 4.0 * 4.0;
		float fbcolsoffset26 = 1.0f / 4.0;
		float fbrowsoffset26 = 1.0f / 4.0;
		float fbspeed26 = temp_output_7_0 * 2.0;
		float2 fbtiling26 = float2(fbcolsoffset26, fbrowsoffset26);
		float fbcurrenttileindex26 = round( fmod( fbspeed26 + 0.0, fbtotaltiles26) );
		fbcurrenttileindex26 += ( fbcurrenttileindex26 < 0) ? fbtotaltiles26 : 0;
		float fblinearindextox26 = round ( fmod ( fbcurrenttileindex26, 4.0 ) );
		float fboffsetx26 = fblinearindextox26 * fbcolsoffset26;
		float fblinearindextoy26 = round( fmod( ( fbcurrenttileindex26 - fblinearindextox26 ) / 4.0, 4.0 ) );
		fblinearindextoy26 = (int)(4.0-1) - fblinearindextoy26;
		float fboffsety26 = fblinearindextoy26 * fbrowsoffset26;
		float2 fboffset26 = float2(fboffsetx26, fboffsety26);
		half2 fbuv26 = appendResult25.xy * fbtiling26 + fboffset26;
		float3 RippleNormals16 = BlendNormals( UnpackScaleNormal( tex2D( _Texture0, fbuv2 ), RippleMask46 ) , UnpackScaleNormal( tex2D( _Texture0, fbuv26 ), RippleMask46 ) );
		float2 temp_cast_7 = (_PuddleSpeed).xx;
		float2 temp_cast_8 = (_PuddleTiling).xx;
		float2 uv_TexCoord52 = i.uv_texcoord * temp_cast_8;
		float2 panner53 = ( 1.0 * _Time.y * temp_cast_7 + uv_TexCoord52);
		float2 temp_cast_9 = (_PuddleSpeed).xx;
		float2 panner54 = ( -1.0 * _Time.y * temp_cast_9 + uv_TexCoord52);
		float3 BuddleNormals60 = BlendNormals( UnpackScaleNormal( tex2D( _PubbleNormals, panner53 ), _PuddleStrength ) , UnpackScaleNormal( tex2D( _PubbleNormals, panner54 ), _PuddleStrength ) );
		o.Normal = BlendNormals( BlendNormals( NormalMap69 , RippleNormals16 ) , BuddleNormals60 );
		float4 tex2DNode66 = tex2D( _AmbientOcclusion, uv_TexCoord64 );
		float4 Albedo73 = ( ( tex2D( _Albedo, uv_TexCoord64 ) * tex2DNode66 ) * ( tex2DNode66 * _Tint ) );
		o.Albedo = Albedo73.rgb;
		o.Smoothness = _Wetness;
		o.Alpha = 1;
	}

	ENDCG
}
Fallback "Diffuse"
CustomEditor "ASEMaterialInspector"

}
/ASEBEGIN
Version=16400
-68;39;1666;1014;817.8931;260.8338;1;True;False
Node;AmplifyShaderEditor.CommentaryNode;12;-3355.09,-989.1117;Float;False;586.944;326.0742;Comment;2;14;3;Ripple Comment;1,1,1,1;0;0
Node;AmplifyShaderEditor.RangedFloatNode;3;-3294.911,-930.9709;Float;False;Property;_RippleTiling;Ripple Tiling;1;0;Create;True;0;0;False;0;12;12;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.CommentaryNode;32;-3351.029,1190.761;Float;False;2071.651;1523.767;Comment;15;47;46;45;44;43;42;41;40;39;38;37;36;35;34;33;RippleMask;1,1,1,1;0;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;14;-3015.1,-927.4686;Float;False;RippleTiling;-1;True;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleTimeNode;33;-3263.728,1541.358;Float;False;1;0;FLOAT;1;False;1;FLOAT;0
Node;AmplifyShaderEditor.RangedFloatNode;34;-3262.683,1835.785;Float;False;Property;_RippleMaskSpeed;Ripple Mask Speed;9;0;Create;True;0;0;False;0;0.32;0.32;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.GetLocalVarNode;47;-3282.994,1282.761;Float;False;14;RippleTiling;1;0;OBJECT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.GetLocalVarNode;35;-3260.323,2173.169;Float;False;14;RippleTiling;1;0;OBJECT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.CommentaryNode;61;-3353.301,-483.8907;Float;False;2941.288;1503.865;Comment;22;15;21;20;4;29;5;23;6;24;10;9;25;7;11;26;2;19;48;27;8;31;16;RippleNormals;1,1,1,1;0;0
Node;AmplifyShaderEditor.TextureCoordinatesNode;37;-2931.994,1265.761;Float;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.TextureCoordinatesNode;38;-2909.323,2156.169;Float;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;36;-2885.041,1699.937;Float;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.PannerNode;40;-2597.995,1264.761;Float;False;3;0;FLOAT2;0,0;False;2;FLOAT2;1,1;False;1;FLOAT;1;False;1;FLOAT2;0
Node;AmplifyShaderEditor.PannerNode;39;-2575.324,2155.169;Float;False;3;0;FLOAT2;0,0;False;2;FLOAT2;-1,-1;False;1;FLOAT;1;False;1;FLOAT2;0
Node;AmplifyShaderEditor.GetLocalVarNode;15;-3303.301,92.51138;Float;False;14;RippleTiling;1;0;OBJECT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.NoiseGeneratorNode;41;-2273.634,1258.99;Float;True;Simplex2D;1;0;FLOAT2;0,0;False;1;FLOAT;0
Node;AmplifyShaderEditor.NoiseGeneratorNode;42;-2262.773,2144.102;Float;True;Simplex2D;1;0;FLOAT2;0,0;False;1;FLOAT;0
Node;AmplifyShaderEditor.Vector2Node;21;-2947.847,715.9747;Float;False;Property;_RippleXY;Ripple XY;7;0;Create;True;0;0;False;0;0,0;0.36,0.78;0;3;FLOAT2;0;FLOAT;1;FLOAT;2
Node;AmplifyShaderEditor.SimpleDivideOpNode;20;-2940.057,366.9143;Float;False;2;0;FLOAT;0;False;1;FLOAT;0.6;False;1;FLOAT;0
Node;AmplifyShaderEditor.RangedFloatNode;44;-1979.375,1396.604;Float;False;Property;_RippleStrength;Ripple Strength;12;0;Create;True;0;0;False;0;1;0.9;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleAddOpNode;43;-2037.874,1689.104;Float;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.TextureCoordinatesNode;29;-2567.736,570.6806;Float;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.TextureCoordinatesNode;4;-2526.319,-339.3379;Float;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.FractNode;24;-2258.77,754.4778;Float;False;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.FractNode;9;-2188.35,-185.1644;Float;False;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.FractNode;10;-2187.643,-433.8907;Float;False;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.FractNode;23;-2252.16,459.6964;Float;False;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;45;-1740.173,1683.904;Float;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.RangedFloatNode;6;-2678.741,215.9942;Float;False;Property;_RippleSpeed;Ripple Speed;4;0;Create;True;0;0;False;0;12;12;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.SimpleTimeNode;5;-2681.187,-45.40055;Float;False;1;0;FLOAT;1;False;1;FLOAT;0
Node;AmplifyShaderEditor.DynamicAppendNode;11;-1965.409,-332.1539;Float;False;FLOAT4;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.RangedFloatNode;50;-3613.844,3350.654;Float;False;Property;_PuddleTiling;Puddle Tiling;13;0;Create;True;0;0;False;0;0.5;3;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.CommentaryNode;49;-3341.595,2939.066;Float;False;1872.621;950.4155;Comment;10;60;59;58;57;56;55;54;53;52;51;Normal;1,1,1,1;0;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;7;-2414.156,77.1777;Float;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.DynamicAppendNode;25;-1974.77,607.4779;Float;False;FLOAT4;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT4;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;46;-1483.587,1684.71;Float;False;RippleMask;-1;True;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.RangedFloatNode;51;-3064.832,3325.1;Float;False;Property;_PuddleSpeed;Puddle Speed;15;0;Create;True;0;0;False;0;0;0.01;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.TextureCoordinatesNode;52;-3350.564,3332.414;Float;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.TexturePropertyNode;19;-1898.052,151.8211;Float;True;Property;_Texture0;Texture 0;0;0;Create;True;0;0;False;0;816e17b685c814145a564d588ff4cb47;816e17b685c814145a564d588ff4cb47;True;bump;Auto;Texture2D;0;1;SAMPLER2D;0
Node;AmplifyShaderEditor.TFHCFlipBookUVAnimation;2;-1664.473,-272.2601;Float;False;0;0;6;0;FLOAT2;0,0;False;1;FLOAT;4;False;2;FLOAT;4;False;3;FLOAT;1;False;4;FLOAT;0;False;5;FLOAT;0;False;3;FLOAT2;0;FLOAT;1;FLOAT;2
Node;AmplifyShaderEditor.RangedFloatNode;63;-3744.713,4469.7;Float;False;Property;_Tilling;Tilling;11;0;Create;True;0;0;False;0;1;2;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.GetLocalVarNode;48;-1532.046,134.3046;Float;False;46;RippleMask;1;0;OBJECT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.TFHCFlipBookUVAnimation;26;-1687.59,662.1809;Float;False;0;0;6;0;FLOAT2;0,0;False;1;FLOAT;4;False;2;FLOAT;4;False;3;FLOAT;2;False;4;FLOAT;0;False;5;FLOAT;0;False;3;FLOAT2;0;FLOAT;1;FLOAT;2
Node;AmplifyShaderEditor.PannerNode;53;-2751.471,3004.115;Float;False;3;0;FLOAT2;0,0;False;2;FLOAT2;0,0;False;1;FLOAT;1;False;1;FLOAT2;0
Node;AmplifyShaderEditor.RangedFloatNode;56;-2835.062,3325.482;Float;False;Property;_PuddleStrength;Puddle Strength;14;0;Create;True;0;0;False;0;0.02;1;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.PannerNode;54;-2710.547,3636.487;Float;False;3;0;FLOAT2;0,0;False;2;FLOAT2;0,0;False;1;FLOAT;-1;False;1;FLOAT2;0
Node;AmplifyShaderEditor.CommentaryNode;74;-3180.966,4156.568;Float;False;1446.282;780.4399;Comment;7;73;72;71;70;67;66;65;Albedo;1,1,1,1;0;0
Node;AmplifyShaderEditor.SamplerNode;8;-1313.615,-247.9286;Float;True;Property;_RippleNormals;Ripple Normals;0;0;Create;True;0;0;False;0;6a25882c01ccc5645a09189a437c4190;6a25882c01ccc5645a09189a437c4190;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.CommentaryNode;62;-3180.601,5107.166;Float;False;658.8622;308;Comment;2;69;68;Normal Map;1,1,1,1;0;0
Node;AmplifyShaderEditor.SamplerNode;27;-1321.132,494.5757;Float;True;Property;_TextureSample0;Texture Sample 0;0;0;Create;True;0;0;False;0;None;816e17b685c814145a564d588ff4cb47;True;0;False;white;Auto;True;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.TextureCoordinatesNode;64;-3549.375,4468.769;Float;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.TexturePropertyNode;55;-2593.646,3325.723;Float;True;Property;_PubbleNormals;Pubble Normals;8;0;Create;True;0;0;False;0;77fdad851e93f394c9f8a1b1a63b56f3;77fdad851e93f394c9f8a1b1a63b56f3;True;bump;Auto;Texture2D;0;1;SAMPLER2D;0
Node;AmplifyShaderEditor.SamplerNode;58;-2343.102,2989.066;Float;True;Property;_PuddleNormals;PuddleNormals;12;0;Create;True;0;0;False;0;None;None;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SamplerNode;57;-2349.544,3664.634;Float;True;Property;_TextureSample2;Texture Sample 2;12;0;Create;True;0;0;False;0;None;None;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SamplerNode;67;-3122.965,4206.567;Float;True;Property;_Albedo;Albedo;2;0;Create;True;0;0;False;0;None;7af3ece29374c234f9406a3bb35df76c;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SamplerNode;66;-3130.966,4438.568;Float;True;Property;_AmbientOcclusion;Ambient Occlusion;3;0;Create;True;0;0;False;0;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.ColorNode;65;-3107.266,4730.008;Float;False;Property;_Tint;Tint;10;0;Create;True;0;0;False;0;1,1,1,0;1,1,1,0;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.BlendNormalsNode;31;-976.1909,125.1722;Float;False;0;3;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.SamplerNode;68;-3130.601,5167.686;Float;True;Property;_NormalMap;Normal Map;5;0;Create;True;0;0;False;0;None;None;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;71;-2667.965,4331.567;Float;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;69;-2764.738,5157.166;Float;False;NormalMap;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;70;-2641.283,4644.619;Float;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.BlendNormalsNode;59;-2007.547,3272.481;Float;False;0;3;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;16;-660.0125,116.6779;Float;False;RippleNormals;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.GetLocalVarNode;76;-136.3259,-43.13544;Float;False;69;NormalMap;1;0;OBJECT;0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.GetLocalVarNode;78;-148.276,221.2466;Float;False;16;RippleNormals;1;0;OBJECT;0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;60;-1719.975,3268.117;Float;False;BuddleNormals;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;72;-2250.93,4473.839;Float;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.BlendNormalsNode;77;111.0801,70.11458;Float;False;0;3;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.RegisterLocalVarNode;73;-1977.684,4468.96;Float;False;Albedo;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0
Node;AmplifyShaderEditor.GetLocalVarNode;79;185.2241,502.6126;Float;False;60;BuddleNormals;1;0;OBJECT;0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.RangedFloatNode;18;432.9712,683.4807;Float;False;Property;_Wetness;Wetness;6;0;Create;True;0;0;False;0;0.766323;0.912;0;1;0;1;FLOAT;0
Node;AmplifyShaderEditor.BlendNormalsNode;75;432.551,129.3415;Float;False;0;3;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;1;FLOAT3;0
Node;AmplifyShaderEditor.GetLocalVarNode;17;451.5947,-256.6484;Float;False;73;Albedo;1;0;OBJECT;0;False;1;COLOR;0
Node;AmplifyShaderEditor.StandardSurfaceOutputNode;0;826.3973,89.31544;Float;False;True;2;Float;ASEMaterialInspector;0;0;Standard;Rain/Test;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;Back;0;False;-1;0;False;-1;False;0;False;-1;0;False;-1;False;0;Opaque;0.5;True;True;0;False;Opaque;;Geometry;All;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;0;False;-1;False;0;False;-1;255;False;-1;255;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;False;2;15;10;25;False;0.5;True;0;0;False;-1;0;False;-1;0;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;0;0,0,0,0;VertexOffset;True;False;Cylindrical;False;Relative;0;;-1;-1;-1;-1;0;False;0;0;False;-1;-1;0;False;-1;0;0;0;False;0.1;False;-1;0;False;-1;16;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT;0;False;9;FLOAT;0;False;10;FLOAT;0;False;13;FLOAT3;0,0,0;False;11;FLOAT3;0,0,0;False;12;FLOAT3;0,0,0;False;14;FLOAT4;0,0,0,0;False;15;FLOAT3;0,0,0;False;0
WireConnection;14;0;3;0
WireConnection;37;0;47;0
WireConnection;38;0;35;0
WireConnection;36;0;33;0
WireConnection;36;1;34;0
WireConnection;40;0;37;0
WireConnection;40;1;36;0
WireConnection;39;0;38;0
WireConnection;39;1;36;0
WireConnection;41;0;40;0
WireConnection;42;0;39;0
WireConnection;20;0;15;0
WireConnection;43;0;41;0
WireConnection;43;1;42;0
WireConnection;29;0;20;0
WireConnection;29;1;21;0
WireConnection;4;0;15;0
WireConnection;24;0;29;2
WireConnection;9;0;4;2
WireConnection;10;0;4;1
WireConnection;23;0;29;1
WireConnection;45;0;44;0
WireConnection;45;1;43;0
WireConnection;11;0;10;0
WireConnection;11;1;9;0
WireConnection;7;0;5;0
WireConnection;7;1;6;0
WireConnection;25;0;23;0
WireConnection;25;1;24;0
WireConnection;46;0;45;0
WireConnection;52;0;50;0
WireConnection;2;0;11;0
WireConnection;2;5;7;0
WireConnection;26;0;25;0
WireConnection;26;5;7;0
WireConnection;53;0;52;0
WireConnection;53;2;51;0
WireConnection;54;0;52;0
WireConnection;54;2;51;0
WireConnection;8;0;19;0
WireConnection;8;1;2;0
WireConnection;8;5;48;0
WireConnection;27;0;19;0
WireConnection;27;1;26;0
WireConnection;27;5;48;0
WireConnection;64;0;63;0
WireConnection;58;0;55;0
WireConnection;58;1;53;0
WireConnection;58;5;56;0
WireConnection;57;0;55;0
WireConnection;57;1;54;0
WireConnection;57;5;56;0
WireConnection;67;1;64;0
WireConnection;66;1;64;0
WireConnection;31;0;8;0
WireConnection;31;1;27;0
WireConnection;68;1;64;0
WireConnection;71;0;67;0
WireConnection;71;1;66;0
WireConnection;69;0;68;0
WireConnection;70;0;66;0
WireConnection;70;1;65;0
WireConnection;59;0;58;0
WireConnection;59;1;57;0
WireConnection;16;0;31;0
WireConnection;60;0;59;0
WireConnection;72;0;71;0
WireConnection;72;1;70;0
WireConnection;77;0;76;0
WireConnection;77;1;78;0
WireConnection;73;0;72;0
WireConnection;75;0;77;0
WireConnection;75;1;79;0
WireConnection;0;0;17;0
WireConnection;0;1;75;0
WireConnection;0;4;18;0
ASEEND
/
//CHKSM=3EAB7961F0450BC6B867D77FCEB0E844159182DC

有兴趣的可以一起研究一下更多AAA级 shader

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/277191.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Matplotlib_plt.subplots 遇见中文乱码解决方案

文章目录 一、现象&#xff1a;二、解决方案1.将 **SimHei.ttf** &#xff0c;下载到当前运行目录中2.绘图中涉及标题、横纵坐标等&#xff0c;加上 **FontProperties font** 即可 环境说明&#xff1a;macOS系统 一、现象&#xff1a; 原先代码是这样的 import numpy as n…

BUUCTF Reverse/[2019红帽杯]Snake

BUUCTF Reverse/[2019红帽杯]Snake 下载解压缩后得到可执行文件&#xff0c;而且有一个unity的应用程序&#xff0c;应该是用unity编写的游戏 打开是一个贪吃蛇游戏 用.NET Reflector打开Assembly-CSharp.dll。&#xff08;unity在打包后&#xff0c;会将所有的代码打进一个Ass…

二、类与对象(三)

17 初始化列表 17.1 初始化列表的引入 之前我们给成员进行初始化时&#xff0c;采用的是下面的这种方式&#xff1a; class Date { public:Date(int year, int month, int day)//构造函数{_year year;_month month;_day day;} private:int _year;int _month;int _day; };…

社招面试题:说一说SPI是什么,有哪些使用场景?

大家好&#xff0c;我是小米&#xff01;今天在这里和大家分享一个在技术面试中常被问到的话题——SPI&#xff08;Service Provider Interface&#xff09;&#xff0c;这是一个令人着迷的技术领域&#xff0c;也是很多Java开发者必须要熟悉的概念。不废话&#xff0c;让我们一…

TikTok短视频互动:设计引人入胜的玩法体验

在数字社交的浪潮中&#xff0c;TikTok以其独特的短视频形式和丰富多彩的互动玩法&#xff0c;成为了全球年轻一代热衷的社交平台。本文将深入剖析TikTok短视频互动的精髓&#xff0c;探讨其设计背后的原理&#xff0c;以及为何这种互动体验如此吸引人。 创意挑战的魅力 TikTok…

机器视觉在智能交通与无人驾驶领域的应用及前景

​引言 机器视觉算法对于智能交通系统和无人驾驶技术是十分重要的。机器视觉技术是无人驾驶汽车感知环境、做出决策的关键&#xff0c;它使得车辆能够理解周围的世界并安全地导航。在智能交通系统中&#xff0c;机器视觉也发挥着至关重要的作用&#xff0c;从提高交通效率到增…

Unity Shader 实现X光效果

Unity Shader 实现X光效果 Unity Shader 实现实物遮挡外轮廓发光效果第五人格黎明杀机火炬之光 实现方案操作实现立体感优化总结源码 Unity Shader 实现实物遮挡外轮廓发光效果 之前看过《火炬之光》、《黎明杀机》、《第五人格》等不少的游戏里面人物被建筑物遮挡呈现出不同的…

【Java干货教程】JSON,JSONObject,JSONArray类详解

一、定义 JSON&#xff1a;就是一种轻量级的数据交换格式&#xff0c;被广泛应用于WEB应用程序开发。JSON的简洁和清晰的层次结构&#xff0c;易于阅读和编写&#xff1b;同时也易于机器解析和生成&#xff0c;有效的提升网络传输效率&#xff1b;支持多种语言&#xff0c;很多…

「年终总结」生成人工智能的奇妙年份

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…

MySQL之复合查询

单表查询回顾 在讲解多表查询前&#xff0c;我们先回顾一下单表查询&#xff0c;这是因为多表查询本质上依然是单表查询&#xff08;其原因在下文中讲解多表查询时再说明&#xff09;&#xff0c;只要掌握了单表查询&#xff0c;那么想掌握多表查询是非常简单的。 在<<…

【Electron】富文本编辑器之文本粘贴

由于这个问题导致&#xff0c;从其他地方复制来的内容 粘贴发送之后都会多一个 换行 在发送的时候如果直接&#xff0c;发送innerHTML 就 可以解决 Electron h5 Andriod 都没问题&#xff0c;但是 公司的 IOS 端 不支持&#xff0c;且不提供支持&#xff08;做不了。&#xff…

2023年华为OD机试(python)B卷-符合要求的结对方式

一、题目 题目描述&#xff1a; 用一个数组A代表程序员的工作能力&#xff0c;公司想通过结对编程的方式提高员工的能力&#xff0c;假设结对后的能力为两个员工的能力之和&#xff0c;求一共有多少种结对方式使结对后能力为N。 二、输入输出 输入描述: 5 1 2 2 2 3 4 第一行为…

个人用户免费,亚马逊正式推出 AI 编程服务 CodeWhisperer

亚马逊于 2022 年 6 月以预览版的形式&#xff0c;推出了 AI 辅助编程服务 CodeWhisperer。2023年4月18日&#xff0c;亚马逊云科技宣布&#xff0c;实时 AI 编程助手 Amazon CodeWhisperer 正式可用&#xff0c;同时推出的还有供所有开发人员免费使用的个人版&#xff08;Code…

深入理解Mysql MHA高可用集群搭建:从实验到实战

1. 简介 MHA&#xff08;Master High Availability&#xff09;是一个高效的开源MySQL高可用性解决方案。由日本开发者yoshinorim&#xff08;前DeNA员工&#xff0c;现在Facebook&#xff09;创建&#xff0c;MHA支持MySQL的主从复制架构&#xff0c;自动化主节点故障转移。当…

Lunix的奇妙冒险————权限篇

文章目录 一.什么是权限二.用户权限和类别。1.用户2.角色3.更换文件角色 三.文件的类别和对应权限1.文件的类别。2.文件属性权限1.权限说明。2.默认生成文件权限来源3.更改权限 3.文件的执行与删除 四.不同用户共同在一个目录下的权限。1.普通用户家目录2.在同一目录下文件的权…

springcloud中使用openfeign来优化接口调用

简单介绍在springcloud中使用openfeign来优化接口调用 目录 一、引入依赖二、为服务提供者编写openfeign接口三、服务消费者调用定义的openfeign接口四、项目结构五、日志级别配置1、通过配置类进行全局配置2、通过配置类进行局部配置3、通过配置文件配置 一、引入依赖 <!-…

工业信息采集平台 软件界面介绍

关键字&#xff1a;蓝鹏测控典型界面,蓝鹏测控交互界面,蓝鹏测控图形界面,蓝鹏测控历史界面,蓝鹏测控自定义界面 软件测控平台对UI程序界面&#xff0c;实现形式没有要求&#xff0c;也就是说&#xff0c;客户可以根据自己的需要设计任何样式的交互界面。 &#xff08;1&…

大数据前馈神经网络解密:深入理解人工智能的基石

文章目录 大数据前馈神经网络解密&#xff1a;深入理解人工智能的基石一、前馈神经网络概述什么是前馈神经网络前馈神经网络的工作原理应用场景及优缺点 二、前馈神经网络的基本结构输入层、隐藏层和输出层激活函数的选择与作用网络权重和偏置 三、前馈神经网络的训练方法损失函…

突破PHP disable_functions方法

1. 利用 LD_PRELOAD 环境变量 知识扫盲 LD_PRELOAD&#xff1a;是Linux系统的一个环境变量&#xff0c;它指定的*.so文件会在程序本身的*.so文件之前被加载。putenv()&#xff1a;PHP函数&#xff0c;可以设置环境变量mail()&#xff0c;error_log()&#xff1a;PHP函数&…

ERROR: No matching distribution found for torch==2.0.1解决方案

大家好&#xff0c;我是水滴~~ 本文主要介绍在安装 stable-diffusion-webui 时出现的 ERROR: No matching distribution found for torch2.0.1 问题的解决方案&#xff0c;希望能对你有所帮助。 《Python入门核心技术》专栏总目录・点这里 文章目录 问题描述解决方案离线安装 …