Boat Attack使用了Universal RP的许多新图形功能,可以用于探索 Universal RP 的使用方式和技巧。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

60 行
1.9 KiB

#ifndef SHADOW_PASS_VEGETATION_INCLUDED
#define SHADOW_PASS_VEGETATION_INCLUDED
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl"
#include "Vegetation.hlsl"
float3 _LightDirection;
struct VertexInput
{
float4 positionOS : POSITION;
float3 normalOS : NORMAL;
float2 texcoord : TEXCOORD0;
half3 color : COLOR;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct VertexOutput
{
float2 uv : TEXCOORD0;
float4 clipPos : SV_POSITION;
};
VertexOutput ShadowPassVegetationVertex(VertexInput input)
{
VertexOutput output;
UNITY_SETUP_INSTANCE_ID(input);
#if _VERTEXANIMATION
/////////////////////////////////////vegetation stuff//////////////////////////////////////////////////
float4 objectOrigin = UNITY_MATRIX_M[1];
input.positionOS.xyz = VegetationDeformation(input.positionOS.xyz, objectOrigin.xyz, input.normalOS.xyz, input.color.x, input.color.z, input.color.y, _BendStrength);
//////////////////////////////////////////////////////////////////////////////////////////////////////
#endif
output.uv = input.texcoord;
float3 positionWS = TransformObjectToWorld(input.positionOS.xyz);
float3 normalWS = TransformObjectToWorldDir(input.normalOS);
output.clipPos = TransformWorldToHClip(ApplyShadowBias(positionWS, normalWS, _LightDirection));
#if UNITY_REVERSED_Z
output.clipPos.z = min(output.clipPos.z, output.clipPos.w * UNITY_NEAR_CLIP_VALUE);
#else
output.clipPos.z = max(output.clipPos.z, output.clipPos.w * UNITY_NEAR_CLIP_VALUE);
#endif
return output;
}
half4 ShadowPassVegetationFragment(VertexOutput IN) : SV_TARGET
{
half alpha = SampleAlbedoAlpha(IN.uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap)).a;
clip(alpha - _Cutoff);
return 1;
}
#endif // SHADOW_PASS_VEGETATION_INCLUDED