Initial Commit
This commit is contained in:
commit
ee5c2f922d
2255 changed files with 547750 additions and 0 deletions
87
Assets/Plugins/Light2D/Resources/Shaders/LightAuto.shader
Normal file
87
Assets/Plugins/Light2D/Resources/Shaders/LightAuto.shader
Normal 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"
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue