Initial Commit

This commit is contained in:
Simeon Radivoev 2022-02-12 12:53:50 +02:00
commit ee5c2f922d
Signed by: simeonradivoev
GPG key ID: 7611A451D2A5D37A
2255 changed files with 547750 additions and 0 deletions

View file

@ -0,0 +1,87 @@
/*
This is most expensive light shader with variable count of path tracking steps.
That shader could be used only on desktop / consoles due to poor performance and required features.
*/
Shader "Light2D/Light Auto Points" {
Properties {
_MainTex ("Light texture", 2D) = "white" {}
_ObstacleMul ("Obstacle Mul", Float) = 500
_EmissionColorMul ("Emission color mul", Float) = 1
_StepCountMul ("Raytracking point count multiplier", Float) = 2
}
SubShader {
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
LOD 100
Blend OneMinusDstColor One
Cull Off
ZWrite Off
Lighting Off
Pass {
CGPROGRAM
#pragma target 3.0 // replace with 4.0 if you see glitches with big _StepCountMul or texture resolution.
#pragma multi_compile ORTHOGRAPHIC_CAMERA PERSPECTIVE_CAMERA
#pragma glsl_no_auto_normalization
#pragma glsl
#include "UnityCG.cginc"
#include "LightBase.cginc"
#pragma vertex light2d_fixed_vert
#pragma fragment frag
uniform half _StepCountMul;
half4 frag (light2d_fixed_v2f i) : COLOR
{
half4 tex = tex2D(_MainTex, i.texcoord);
#ifdef PERSPECTIVE_CAMERA
half4 vPos = ComputeScreenPos(i.projVertex);
half2 thisPos = (vPos.xy/vPos.w - 0.5)*_ExtendedToSmallTextureScale + 0.5;
half4 cPos = ComputeScreenPos(mul(UNITY_MATRIX_VP, float4(i.texcoord1, 0, 1)));
half2 centerPos = (cPos.xy/cPos.w - 0.5)*_ExtendedToSmallTextureScale + 0.5;
#ifdef UNITY_HALF_TEXEL_OFFSET
thisPos += _PosOffset;
centerPos += _PosOffset;
#endif
#else
half2 thisPos = i.thisPos;
half2 centerPos = i.centerPos;
#endif
half pixelSize = 1.0/_ScreenParams.y;
half len = length((thisPos - centerPos)*i.aspect);
int steps = round(_StepCountMul * len / pixelSize);
half sub = 1.0/steps;
half m = _ObstacleMul*sub*len;
half4 col = i.color*tex*tex.a*i.color.a;
half pos = 0;
for(half i = 0; i < steps; i++)
{
pos += sub;
half4 obstacle = tex2Dlod(_ObstacleTex, half4(lerp(centerPos, thisPos, pos), 0, 0));
col *= saturate(1 - (1 - obstacle)*obstacle.a*m);
}
col.rgb *= _EmissionColorMul;
return col;
}
ENDCG
}
}
Fallback "Light2D/Light 80 Points"
}