Files
2026-05-09 09:10:52 +08:00

90 lines
2.4 KiB
Plaintext

Shader "Enviro3/Standard/WeatherTexture"
{
Properties
{
_Coverage ("Coverage", Range(0,1)) = 0.5
_Tiling ("Tiling", Range(1,100)) = 10
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#include "../Includes/NoiseInclude.cginc"
#pragma target 3.0
#pragma exclude_renderers gles
sampler2D _MainTex;
struct VertexInput
{
half4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct VertexOutput
{
float4 position : SV_POSITION;
float2 uv : TEXCOORD0;
};
VertexOutput vert (appdata_img v)
{
VertexOutput o;
o.position = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord;
return o;
}
float4x4 world_view_proj;
float _CoverageLayer1;
float _CloudsTypeLayer1;
float _WorleyFreq1Layer1;
float _WorleyFreq2Layer1;
float _DilateCoverageLayer1;
float _DilateTypeLayer1;
float _CloudsTypeModifierLayer1;
float4 _LocationOffset;
float3 _WindDirectionLayer1;
float4 frag(VertexInput input) : SV_Target
{
float2 uv = input.uv;
float2 windOffsetLayer1 = _WindDirectionLayer1.xy;
//float2 fillerUV = uv.xy + windOffsetLayer1 + _LocationOffset.xy;
//float covFiller = WorleyFBM2D(fillerUV,2,0.75) * 0.8;
int freq1 = _WorleyFreq1Layer1;
int freq2 = _WorleyFreq2Layer1;
//Worley Noise
float worley1Layer1 = WorleyFBM2D((windOffsetLayer1 + _LocationOffset.xy + uv.xy), freq1, 1.4);
float worley2Layer1 = WorleyFBM2D((windOffsetLayer1 + _LocationOffset.xy + uv.xy), freq2, 2.2);
float dilateCoverageLayer1 = lerp(worley1Layer1,worley2Layer1,_DilateCoverageLayer1);
//Coverage Layer
float coverageLayer1 = saturate(dilateCoverageLayer1 + ((1-dilateCoverageLayer1) * _CoverageLayer1));
float dilateTypeLayer1 = (pow(lerp(worley1Layer1,worley2Layer1,_DilateTypeLayer1),0.5) - 0.1) * 0.65;
float typeLayer1 = saturate(dilateTypeLayer1 * _CloudsTypeModifierLayer1);
float topClouds = saturate(pow((worley2Layer1) * worley1Layer1,1.5) + pow(worley1Layer1,_CoverageLayer1 * 2));
return float4(coverageLayer1,typeLayer1,topClouds,pow(topClouds,0.5));
}
ENDCG
}
}
FallBack "Diffuse"
}