90 lines
2.4 KiB
Plaintext
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"
|
|
}
|