WuhuIsland/Assets/SLZShaders/Mod2x.shader
Jo 5eb961ae8a chore: add MarrowSDK plugin
Signed-off-by: Jo <johannesreckers2006@gmail.com>
2024-08-07 01:40:32 +02:00

225 lines
No EOL
7.4 KiB
Text

Shader "SLZ/Mod2x"
{
Properties
{
[HideInInspector] _AlphaCutoff("Alpha Cutoff ", Range(0, 1)) = 0.5
[HideInInspector] _EmissionColor("Emission Color", Color) = (1,1,1,1)
_MainTex("MainTex", 2D) = "gray" {}
[HDR]_Color("Color", Color) = (1,1,1,0)
_OffsetUnits("OffsetUnits", Int) = -2
_OffsetFactor("OffsetFactor", Int) = -2
_Multiplier("Multiplier", Float) = 1
[Toggle(_ALPHA_ON)] _alpha("alpha", Float) = 0
[Toggle(_VERTEXCOLORS_ON)] _VertexColors("VertexColors", Float) = 1
// [HideInInspector] _texcoord( "", 2D ) = "white" {}
// [HideInInspector]_QueueOffset("_QueueOffset", Float) = 0
// [HideInInspector]_QueueControl("_QueueControl", Float) = -1
// [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {}
// [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {}
// [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {}
}
SubShader
{
LOD 0
Tags { "RenderPipeline"="UniversalPipeline" "RenderType"="Transparent" "Queue"="Transparent-499" "IgnoreProjector" = "True"}
Cull Back
AlphaToMask Off
HLSLINCLUDE
#pragma target 5.0
#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/PlatformCompiler.hlsl"
ENDHLSL
Pass
{
Name "Forward"
Tags { "LightMode"="UniversalForward" }
Blend DstColor SrcColor
ZWrite Off
ZTest LEqual
Offset [_OffsetFactor] , [_OffsetUnits]
ColorMask RGBA
HLSLPROGRAM
#define _RECEIVE_SHADOWS_OFF 1
#pragma multi_compile_instancing
#define ASE_SRP_VERSION 999999
#define SHADERPASS SHADERPASS_UNLIT
#pragma vertex vert
#pragma fragment frag
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
//#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
//#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl"
//#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl"
//#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl"
//#include "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl"
//#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging3D.hlsl"
//#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
//#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceData.hlsl"
#define ASE_NEEDS_FRAG_COLOR
#define ASE_NEEDS_FRAG_WORLD_POSITION
#pragma shader_feature _ALPHA_ON
#pragma shader_feature _VERTEXCOLORS_ON
#pragma multi_compile _ _VOLUMETRICS_ENABLED
#pragma multi_compile_fog
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareOpaqueTexture.hlsl"
struct VertexInput
{
float4 vertex : POSITION;
float3 ase_normal : NORMAL;
float4 ase_texcoord : TEXCOORD0;
float4 ase_color : COLOR;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct VertexOutput
{
float4 clipPos : SV_POSITION;
float3 worldPos : TEXCOORD0;
float fogFactor : TEXCOORD2;
float4 ase_texcoord3 : TEXCOORD3;
float4 ase_color : COLOR;
float4 ase_texcoord4 : TEXCOORD4;
UNITY_VERTEX_INPUT_INSTANCE_ID
UNITY_VERTEX_OUTPUT_STEREO
};
CBUFFER_START(UnityPerMaterial)
float4 _MainTex_ST;
float4 _Color;
int _OffsetUnits;
int _OffsetFactor;
float _Multiplier;
CBUFFER_END
sampler2D _MainTex;
shared float _StaticLightMultiplier;
VertexOutput VertexFunction ( VertexInput v )
{
VertexOutput o = (VertexOutput)0;
UNITY_SETUP_INSTANCE_ID(v);
UNITY_TRANSFER_INSTANCE_ID(v, o);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
float4 ase_clipPos = TransformObjectToHClip((v.vertex).xyz);
float4 screenPos = ComputeScreenPos(ase_clipPos);
o.ase_texcoord4 = screenPos;
o.ase_texcoord3.xy = v.ase_texcoord.xy;
o.ase_color = v.ase_color;
//setting value to unused interpolator channels and avoid initialization warnings
o.ase_texcoord3.zw = 0;
v.ase_normal = v.ase_normal;
float3 positionWS = TransformObjectToWorld( v.vertex.xyz );
float4 positionCS = TransformWorldToHClip( positionWS );
#if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
o.worldPos = positionWS;
#endif
o.fogFactor = ComputeFogFactor( positionCS.z );
o.clipPos = positionCS;
return o;
}
VertexOutput vert ( VertexInput v )
{
return VertexFunction( v );
}
half3 Mod2xFog(half3 fragColor, half fogFactor)
{
#if defined(FOG_LINEAR) || defined(FOG_EXP) || defined(FOG_EXP2)
half fogIntensity = ComputeFogIntensity(fogFactor);
fragColor = lerp(0.5, fragColor, fogIntensity);
#endif
return fragColor;
}
half4 frag ( VertexOutput IN ) : SV_Target
{
UNITY_SETUP_INSTANCE_ID( IN );
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX( IN );
#if defined(ASE_NEEDS_FRAG_WORLD_POSITION)
float3 WorldPosition = IN.worldPos;
#endif
float localMyCustomExpression1_g126 = ( 0.0 );
float2 uv_MainTex = IN.ase_texcoord3.xy * _MainTex_ST.xy + _MainTex_ST.zw;
float4 appendResult52 = (float4(1.0 , 1.0 , 1.0 , IN.ase_color.a));
#ifdef _VERTEXCOLORS_ON
float4 staticSwitch38 = IN.ase_color;
#else
float4 staticSwitch38 = appendResult52;
#endif
float4 temp_output_16_0 = ( tex2D( _MainTex, uv_MainTex ) * _Color * staticSwitch38 );
float4 temp_output_26_0 = ( ( ( temp_output_16_0 - .5 ) * _Multiplier ) + 0.5 );
#ifdef _ALPHA_ON
float4 lerpResult30 = lerp( .5 , temp_output_26_0 , (temp_output_16_0).a);
float4 staticSwitch28 = lerpResult30;
#else
float4 staticSwitch28 = temp_output_26_0;
#endif
float4 color1_g126 = staticSwitch28;
float localMyCustomExpression24_g126 = ( 0.0 );
float4 screenPos = IN.ase_texcoord4;
float4 ase_screenPosNorm = screenPos / screenPos.w;
ase_screenPosNorm.z = ( UNITY_NEAR_CLIP_VALUE >= 0 ) ? ase_screenPosNorm.z : ase_screenPosNorm.z * 0.5 + 0.5;
float2 uv24_g126 = (ase_screenPosNorm).xy;
float3 BakedAlbedo = 0;
float3 BakedEmission = 0;
float3 Color = color1_g126.xyz;
float Alpha = 1;
float AlphaClipThreshold = 0.5;
float AlphaClipThresholdShadow = 0.5;
#ifdef _ALPHATEST_ON
clip( Alpha - AlphaClipThreshold );
#endif
#if defined(_ALPHAPREMULTIPLY_ON)
Color *= Alpha;
#endif
#ifdef LOD_FADE_CROSSFADE
LODDitheringTransition( IN.clipPos.xyz, unity_LODFade.x );
#endif
Color.rgb = Mod2xFog( Color, IN.fogFactor );
#if defined(_VOLUMETRICS_ENABLED)
//works fine on the PC but not quest. Using a semi-plausible result otherwise.
#if !defined(SHADER_API_MOBILE)
half3 FroxelColor = GetVolumetricColor(WorldPosition).rgb;
Color.rgb = Color.rgb - 0.5* (2.0*Color.rgb - 1.0) * FroxelColor / SampleSceneColor(uv24_g126).rgb;
#else
half4 FroxelColor = GetVolumetricColor(IN.worldPos);
Color.rgb = Color.rgb + (saturate(FroxelColor.rgb)*(0.5-Color.rgb)); //rgb lerp //x + s(y-x)
Color.rgb = lerp(0.5, Color , saturate(FroxelColor.a*FroxelColor.a) );
#endif
#endif
return half4( Color, Alpha );
}
ENDHLSL
}
}
Fallback "Hidden/InternalErrorShader"
}