#Shader for 2.5D game
1 messages · Page 1 of 1 (latest)
btw I can send the shader code made by allendev if it's doable to change it to work two sided
Best to send it so can assess how doable it is
You basically need custom lighting that eliminates normal attenuation
So that the lighting only has distance attenuation, and isn't affected by which way the surface is facing relative to the light
// Sprite Shadow Shader - AllenDevs
Shader "Sprites/Custom/SpriteShadow"
{
Properties
{
[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
_Color("Tint", Color) = (1,1,1,1)
[MaterialToggle] PixelSnap("Pixel snap", Float) = 0
[HideInInspector] _RendererColor("RendererColor", Color) = (1,1,1,1)
[HideInInspector] _Flip("Flip", Vector) = (1,1,1,1)
[PerRendererData] _AlphaTex("External Alpha", 2D) = "white" {}
[PerRendererData] _EnableExternalAlpha("Enable External Alpha", Float) = 0
_Cutoff("Alpha Cutoff", Range(0,1)) = 0.5
}
SubShader
{
Tags
{
"Queue" = "Transparent"
"IgnoreProjector" = "True"
"RenderType" = "Transparent"
"PreviewType" = "Plane"
"CanUseSpriteAtlas" = "True"
}
Cull Off
Lighting Off
ZWrite Off
Blend One OneMinusSrcAlpha
CGPROGRAM
#pragma surface surf Lambert vertex:vert alphatest:_Cutoff addshadow nofog nolightmap nodynlightmap keepalpha noinstancing
#pragma multi_compile_local _ PIXELSNAP_ON
#pragma multi_compile _ ETC1_EXTERNAL_ALPHA
#include "UnitySprites.cginc"
struct Input
{
float2 uv_MainTex;
fixed4 color;
};
void vert(inout appdata_full v, out Input o)
{
v.vertex = UnityFlipSprite(v.vertex, _Flip);
#if defined(PIXELSNAP_ON)
v.vertex = UnityPixelSnap(v.vertex);
#endif
UNITY_INITIALIZE_OUTPUT(Input, o);
o.color = v.color * _Color * _RendererColor;
}
void surf(Input IN, inout SurfaceOutput o)
{
fixed4 c = SampleSpriteTexture(IN.uv_MainTex) * IN.color;
o.Albedo = c.rgb * c.a;
o.Alpha = c.a;
}
ENDCG
}
Fallback "Transparent/VertexLit"
}
btw I just wanna say thank you for even replying, I appreciate it. my game only will look good if the shader works
It's not a URP shader, but a BiRP surface shader, which I'm not really familiar with
Means your project probably isn't using URP either since you can see the material
There probably are tutorials for BiRP how to modify the lighting model
!code
📃 Large Code Blocks
Use links to services like:
https://paste.mod.gg/, https://hastebin.skyra.pw/, https://paste.ofcode.org/, https://paste.myst.rs/
📃 Inline Code
Surround code with three backquotes. Not quotation marks.
To format as C#, add cs to the first line:
```cs
// Your code here
```
Add a comment with a line number if there is an error message.
for next time you post blocks of code
oh okay thanks, ill see if I can do it myself
you need to override lighting and instead of using regular NdotL, you can try absolute NdotL, like
half NdotL = abs(dot (s.Normal, lightDir));
See:
https://docs.unity3d.com/2022.3/Documentation//Manual/SL-SurfaceShaderLightingExamples.html
thank youu!