Weirdest Self Shadows, Shadow-Acne? Shader Issue?

I can’t seem to make my shadows look right, while trying to modify an unlit shader w/shadows from forum user Farfarer, I managed to get it to work with ambient light and added a color tinting option. Unfortunately, from the start the shader has given me odd, square-like artifacts on self-shadowing. The problem doesn’t exist when the shadows are from one object to another, only when they’re from the single object on itself.

Below is the code I’ve been working on, which I am absolutely horrible with coding shaders, so it likely has problems.

It’s also throwing off the warnings, which likely come from my admitted ignorance on shaders :

“Shader warning in ‘Unlit Ambient With Shadows and Color’: Program ‘frag’, error X4539: sampler mismatch: sampler used inconsistently (compiling for d3d11_9x) at line 64”
and
“Shader warning in ‘Unlit Ambient With Shadows and Color’: Program ‘frag’, implicit truncation of vector type (compiling for d3d11_9x) at line 77”

Shader "Unlit Ambient With Shadows and Color" {
	Properties {
		_Color ("Main Color", Color) = (1,1,1,1)
		_MainTex ("Base (RGB)", 2D) = "white" {}
	}
	SubShader {
	

	
		Tags {"Queue" = "Geometry" "RenderType" = "Opaque"}

		Pass {
		
		
			Tags {"LightMode" = "ForwardBase"}
			CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag
				#pragma multi_compile_fwdbase
				#pragma fragmentoption ARB_fog_exp2
				#pragma fragmentoption ARB_precision_hint_fastest
				
				#include "UnityCG.cginc"
				#include "AutoLight.cginc"
				
				struct v2f
				{
					float4	pos			: SV_POSITION;
					float2	uv			: TEXCOORD0;

					LIGHTING_COORDS(1,2)
				};


				v2f vert (appdata_tan v)
				{
					v2f o;
					
					o.pos = mul( UNITY_MATRIX_MVP, v.vertex);
					o.uv = v.texcoord.xy;
					TRANSFER_VERTEX_TO_FRAGMENT(o);
					return o;
				}

				sampler2D _MainTex;
        	fixed4 _Color;                
				fixed4 frag(v2f i) : COLOR
				{
					fixed atten = LIGHT_ATTENUATION(i);	// Light attenuation + shadows.
					//fixed atten = SHADOW_ATTENUATION(i); // Shadows ONLY.
					return tex2D(_MainTex, i.uv)* _Color * atten * (UNITY_LIGHTMODEL_AMBIENT * 2);
					
					
				}
				
				
			ENDCG
		}

		Pass {
		
			Tags {"LightMode" = "ForwardAdd"}
			Blend One One
			CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag
				#pragma multi_compile_fwdadd_fullshadows
				#pragma fragmentoption ARB_fog_exp2
				#pragma fragmentoption ARB_precision_hint_fastest
				
				#include "UnityCG.cginc"
				#include "AutoLight.cginc"
				
				struct v2f
				{
					float4	pos			: SV_POSITION;
					float2	uv			: TEXCOORD0;
					LIGHTING_COORDS(1,2)
				};

				v2f vert (appdata_tan v)
				{
					v2f o;
					
					o.pos = mul( UNITY_MATRIX_MVP, v.vertex);
					o.uv = v.texcoord.xy;
					TRANSFER_VERTEX_TO_FRAGMENT(o);
					return o;
				}

				sampler2D _MainTex;

				fixed4 frag(v2f i) : COLOR
				{
					fixed atten = LIGHT_ATTENUATION(i);	// Light attenuation + shadows.
					//fixed atten = SHADOW_ATTENUATION(i); // Shadows ONLY.
					return tex2D(_MainTex, i.uv) * atten;
				}

				
				
			ENDCG
		}


   
	}
	FallBack "VertexLit"
}

I’ve tried all the staple fixes for shadows, including increasing the shadow resolution, decreasing the bias, and messing with the cascades and shadow distance to no avail. I’ve also tried fudging with the camera’s clipping plane, resizing the textures that the models use, adding more polygons to my simple objects, and making sure the normals are correct, but even basic spheres and boxes have the issue.

I really wanted to figure this one out on my own, and tried to do the research, but it’s just not getting me anywhere besides “That’s Unity’s lighting”. I’m on Unity Free, so I just can’t switch over to deferred lighting, which I assume would handle this better.

I appreciate any help you can give, and I will try to provide more information if you just ask. Thank you for your help!

Surely you mean increasing the bias?

Yes, sorry, I meant increasing the bias, although I did try it both ways anyways. Good catch!