add : unabomber scene
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
Shader "Unheimlich/Portal Fog"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
_ColorA ("Fog shadow", Color) = (0.18,0.25,0.28,0.38)
|
||||
_ColorB ("Fog light", Color) = (0.42,0.52,0.54,0.38)
|
||||
_DepthAtten ("Depth attenuation", Range(0,1)) = 1
|
||||
_Density ("Density", Range(0,2)) = 0.8
|
||||
_Curvature ("Curvature", Float) = 0.006
|
||||
_StartDistance ("Start distance", Float) = 6
|
||||
_HorizontalInfluence ("Horizontal influence", Float) = 0.12
|
||||
_BendAngle ("Bend angle", Float) = 180
|
||||
[Enum(Default,0,Outside,1,Inside,2)] _MaskID ("Portal mask", Float) = 0
|
||||
}
|
||||
SubShader
|
||||
{
|
||||
Tags { "RenderPipeline"="UniversalPipeline" "Queue"="Transparent" "RenderType"="Transparent" }
|
||||
Pass
|
||||
{
|
||||
Name "PortalFog"
|
||||
Tags { "LightMode"="SRPDefaultUnlit" }
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
ZWrite Off
|
||||
Cull Off
|
||||
HLSLPROGRAM
|
||||
#pragma vertex Vert
|
||||
#pragma fragment Frag
|
||||
#pragma target 3.5
|
||||
#pragma multi_compile_instancing
|
||||
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
||||
#include "Assets/_Content/Shaders/Include/CurvedWorld.hlsl"
|
||||
#include "Assets/_Content/Models/VFX/Fog/ShadersA/Fog.hlsl"
|
||||
#include "Assets/_Content/Shaders/EnkiBilal/Include/Mask.hlsl"
|
||||
CBUFFER_START(UnityPerMaterial)
|
||||
float4 _ColorA, _ColorB;
|
||||
float _DepthAtten, _Density;
|
||||
float _Curvature, _StartDistance, _HorizontalInfluence, _BendAngle;
|
||||
float _MaskID;
|
||||
CBUFFER_END
|
||||
float4x4 _Mask0, _Mask1, _Mask2;
|
||||
struct Attributes { float3 positionOS : POSITION; UNITY_VERTEX_INPUT_INSTANCE_ID };
|
||||
struct Varyings
|
||||
{
|
||||
float4 positionCS : SV_POSITION;
|
||||
float3 originalWS : TEXCOORD0;
|
||||
float3 originalOS : TEXCOORD1;
|
||||
float3 bentWS : TEXCOORD2;
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
Varyings Vert(Attributes input)
|
||||
{
|
||||
Varyings output = (Varyings)0;
|
||||
UNITY_SETUP_INSTANCE_ID(input);
|
||||
UNITY_TRANSFER_INSTANCE_ID(input, output);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
|
||||
output.originalOS = input.positionOS;
|
||||
output.originalWS = TransformObjectToWorld(input.positionOS);
|
||||
float3 bent;
|
||||
CurvedWorld_float(input.positionOS, _Curvature, _StartDistance, _HorizontalInfluence, _BendAngle, bent);
|
||||
output.bentWS = TransformObjectToWorld(bent);
|
||||
output.positionCS = TransformWorldToHClip(output.bentWS);
|
||||
return output;
|
||||
}
|
||||
half4 Frag(Varyings input) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(input);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
|
||||
// The mask is a camera projection, so it uses the displayed (bent) position.
|
||||
float maskAlpha;
|
||||
Mask_float(input.bentWS, _MaskID, _Mask0, _Mask1, _Mask2, maskAlpha);
|
||||
clip(maskAlpha - 0.5);
|
||||
float3 color; float alpha;
|
||||
float3 scale = float3(length(TransformObjectToWorldDir(float3(1,0,0), false)),
|
||||
length(TransformObjectToWorldDir(float3(0,1,0), false)),
|
||||
length(TransformObjectToWorldDir(float3(0,0,1), false)));
|
||||
// Keep the noise anchored in the world while the curtains follow the player.
|
||||
Fog_float(_ColorA, _ColorB, _DepthAtten, input.originalWS, input.originalOS,
|
||||
float3(0,0,0), scale, color, alpha);
|
||||
return half4(color, saturate(alpha * _Density));
|
||||
}
|
||||
ENDHLSL
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user