Шейдер растворения для Sprite Renderer

Шейдеры и все-все-все.

Шейдер растворения для Sprite Renderer

Сообщение Ostavnow 03 мар 2022, 19:56

Всем привет :-h ! хотел написать шейдер растворения для Sprite Renderer.Код взял из этой статьи https://habr.com/ru/post/427401/ .
И я просто скопировал этот код в шейдер, потом создал материал и перенёс на Sprite Renderer и в нём же высвечивается следующие предупреждение,Material texture property _MainTex has offset/scale set. It is
incompatible with SpriteRenderer.Я пытался исправить ошибку сам но не увидел что где-то бы изменялось положение и масштаб текстуры.Вот код:
Shader "Custom/DissolveSurface" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0

//Dissolve properties
_DissolveTexture("Dissolve Texutre", 2D) = "white" {}
_Amount("Amount", Range(0,1)) = 0
}

SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
Cull Off //Fast way to turn your material double-sided

CGPROGRAM
#pragma surface surf Standard fullforwardshadows

#pragma target 3.0

sampler2D _MainTex;

struct Input {
float2 uv_MainTex;
};

half _Glossiness;
half _Metallic;
fixed4 _Color;

//Dissolve properties
sampler2D _DissolveTexture;
half _Amount;

void surf (Input IN, inout SurfaceOutputStandard o) {

//Dissolve function
half dissolve_value = tex2D(_DissolveTexture, IN.uv_MainTex).r;
clip(dissolve_value - _Amount);

//Basic shader function
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;

o.Albedo = c.rgb;
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
Сразу благодарю за помощь :D
Нерешаемых задач несуществует!
И швец, и жнец, и х!@м на дуде игрец
Наш Discord канал: _https://discord.gg/DeamAmmM . Присойденяйся!
Я в Discord: Ostavnow#2287
Аватара пользователя
Ostavnow
UNец
 
Сообщения: 35
Зарегистрирован: 27 ноя 2021, 16:22
Откуда: Краснодар

Re: Шейдер растворения для Sprite Renderer

Сообщение Ostavnow 04 мар 2022, 19:11

Вообщем после жёсткого секса с MIcrosoft Docs, и других сайтов, я всё таки написал шейдер растворения, в интернете не кто не написал такого шейдера совместимый со Sprite Render только при использовании Shader Graph но это мне не подходит потому-что он работает только с универсальным рендерером что мне не подходит.А то что в статье(я ссылку оставлял ранее) там вообще не рабочий код. Ладно вот код:
Shader "Custom/SpriteRendererSoluble"
{
Properties
{
[PerRendererData]
_MainTex ("Main Texture", 2D) = "white" {}
_Color ("Color" , Color) = (1,1,1,1)
_Amount ("Amount",Range(0,1)) = 0
_DissolveTexture("Dissolve Texutre", 2D) = "white" {}
}
SubShader
{
Tags
{
"RenderType" = "Transparent"
"Queue" = "Transparent"
}
Cull Off
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
float4 color : COLOR;
};
struct v2f
{
float4 vertex : SV_POSITION;
float2 uv : TEXCOORD0;
float4 color : COLOR;
};
fixed4 _Color;
sampler2D _MainTex;
sampler2D _DissolveTexture;
half _Amount;
v2f vert (appdata v)
{
v2f o;
o.uv = v.uv;
o.color = v.color;
o.vertex = UnityObjectToClipPos(v.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 texColor = tex2D(_MainTex, i.uv)*i.color;
fixed4 texColore = tex2D(_DissolveTexture, i.uv);
clip(texColore - _Amount);
return texColor;
}
ENDCG
}
}
}
Работает это следующим образом, Мы кидаем текстуру допустим вот такого типа в _DissolveTexture
https://drive.google.com/file/d/1X8zT3r ... sp=sharing
Потом метод clip() будет из этой текстуры(_DissolveTexture) удалять сначала те пикселы которые сначала прозрачные или чёрные, потом пикселы которые она удалила будет удалять с нашей основной текстуры.Переменная _Amount принимает значение от 0 до 1 где 0 никакой пиксел не удаляется и где 1 удаляется непрозрачный белый пиксел. Надеюсь я понятно объяснил
Нерешаемых задач несуществует!
И швец, и жнец, и х!@м на дуде игрец
Наш Discord канал: _https://discord.gg/DeamAmmM . Присойденяйся!
Я в Discord: Ostavnow#2287
Аватара пользователя
Ostavnow
UNец
 
Сообщения: 35
Зарегистрирован: 27 ноя 2021, 16:22
Откуда: Краснодар


Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4