#Shader for 2.5D game

1 messages · Page 1 of 1 (latest)

dense kite
#

im currently using shader made by Allendev, but it only work on one side as you can see. is there any shader for 2d sprite that works with 3d environment (react with 3d lighting and cast shadows etc)

#

btw I can send the shader code made by allendev if it's doable to change it to work two sided

south narwhal
#

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

dense kite
# south narwhal Best to send it so can assess how doable it is

// 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

south narwhal
#

!code

patent owlBOT
south narwhal
#

for next time you post blocks of code

dense kite
#

oh okay thanks, ill see if I can do it myself

near snow
hushed musk
#

this might sound stupid but you could probably also duplicate and rotate/mirror the sprite mesh on the backside

#

i feel like i've had to do something like that before for 3d sprite lighting