先修复一下,错误的场景 删除不必要的钓场资产 修复into场景 update:更新meta文件,修复报错 update:修复资源 修复第一章节建造 修复建造第三章 update:删除多余内容 update:更新README.md update:还原图标 update:更新README update:更新配置
68 lines
1.9 KiB
HLSL
68 lines
1.9 KiB
HLSL
//-----------------------------------------------------------------------------
|
|
// Copyright(C) Yan Verde - All Rights Reserved
|
|
// Copyright protected under Unity Asset Store EULA
|
|
// Refer to https://unity3d.com/legal/as_terms for more informations
|
|
// -----------------------------------------------------------------------------
|
|
// URP Water
|
|
// Author : Yan Verde
|
|
// Date : April 10, 2021
|
|
// -----------------------------------------------------------------------------
|
|
|
|
|
|
#ifndef URPWATER_SCATTERING_INCLUDED
|
|
#define URPWATER_SCATTERING_INCLUDED
|
|
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
#include "URPWaterVariables.hlsl"
|
|
#include "URPWaterHelpers.hlsl"
|
|
|
|
|
|
void ComputeScattering(inout GlobalData data, Varyings IN)
|
|
{
|
|
#if _SCATTERING_ON
|
|
|
|
Light mainLight = data.mainLight;
|
|
|
|
float3 lightColor = mainLight.color;
|
|
|
|
// --- Translucency ---
|
|
float3 L = mainLight.direction;
|
|
float3 V = data.worldViewDir;
|
|
float3 N = IN.worldNormal;// data.worldNormal;
|
|
|
|
#if _DOUBLE_SIDED_ON
|
|
L.y = lerp(-L.y, L.y, data.vFace);
|
|
#endif
|
|
|
|
|
|
float3 H = normalize(L + N * _ScatteringRangeMin);
|
|
float VdotH = pow(saturate(max(0, dot(V, -H))), _ScatteringRangeMax);
|
|
|
|
float scatterMask = saturate(VdotH) * _ScatteringIntensity;
|
|
|
|
|
|
#if _DISPLACEMENTMODE_GERSTNER && _CAPS_SCATTERING_ON
|
|
|
|
float3 worldN = lerp(N, data.worldNormal, _CapsScatterNormals);
|
|
float NdotV = dot(worldN, V);
|
|
float waveScatter = smoothstep(_CapsScatteringRangeMin, _CapsScatteringRangeMax, saturate(IN.texcoord3.y));
|
|
float fresnel = max(0, NdotV * NdotV);
|
|
fresnel *= 1- dot(float3(0,1,0), V);
|
|
|
|
scatterMask += saturate(fresnel) * waveScatter * _CapsScatteringIntensity;
|
|
#endif
|
|
|
|
float3 scatterColor = _ScatteringColor.rgb * saturate(scatterMask);
|
|
|
|
data.scattering = scatterColor * saturate(lightColor);
|
|
|
|
|
|
#if _DOUBLE_SIDED_ON
|
|
data.scattering = lerp(data.scattering * 0.25, data.scattering, data.vFace);
|
|
#endif
|
|
|
|
|
|
#endif
|
|
}
|
|
|
|
#endif |