Question by
udeveloping · Jun 26, 2020 at 03:03 PM ·
2d gameshader programming2d spritesshader writing
2D pixel water shader
Hello! I am stuck in shader coding! i don't know nothing about, so, i have tried some codes and searching in google and i find a shader and i have edited it, the water move is fine for me, but the shader is filling alpha pixels with opaque pixels. how can i do to a shader keep transparent pixels and never override them by opaque one? Please help!
Here are the water sprite used as a tile:
and a screenshot to see the result:
This is how it should be, the desired looks (with the shader movemente):
This is the code:
Shader "Unlit/Water2D2"
{
Properties
{
_MainTex("Texture", 2D) = "white" {}
_ScrollX("X Scroll Speed", Range(-10, 10)) = 0
_WaveSpeed("WaveSpeed", Range(0, 100)) = 10
_FrequencyX("X Axis Frequency", Range(0, 100)) = 34
_AmplitudeX("X Axis Amplitude", Range(0, 100)) = 0.005
}
SubShader
{
Tags {"Queue" = "Transparent" "RenderType" = "TransparentCutOut" }
LOD 200
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma alpha
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
fixed _ScrollX;
fixed _FrequencyX;
fixed _AmplitudeX;
fixed _WaveSpeed;
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}
fixed4 frag(v2f i) : SV_Target
{
fixed time = _Time * _WaveSpeed;
fixed2 uvs = i.uv;
fixed offset = (_ScrollX * _Time);
uvs.y += offset;
uvs.y = fmod(uvs.y, 1);
uvs.y += sin(uvs.y * _FrequencyX + time) * _AmplitudeX;
fixed2 uvs2 = i.uv;
uvs2.y -= offset;
uvs2.y = fmod(uvs2.y, 1);
if (uvs2.y < 0)
uvs2.y += 1;
uvs2.x = 1 - i.uv.y;
uvs2.y += sin(uvs2.y * _FrequencyX + time) * _AmplitudeX;
fixed4 col = tex2D(_MainTex, uvs);
fixed4 col2 = tex2D(_MainTex, uvs2);
//?????
col.a = 0.5f;
col2.a = 0.5f;
col = (col + col2) / 2;
return col;
}
ENDCG
}
}
}
Am i missing some pragma or setting in the code?
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220613001839im_/https://answers.unity.com/themes/thub/images/avi.jpg)