Передать переменную из вертексного шейдера в фрагментный

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

Передать переменную из вертексного шейдера в фрагментный

Сообщение SARJ 07 янв 2016, 17:16

Как передать переменную типа float, fixed или целочисленную из вертексного шейдера в фрагментный?
Кстати, какой тип данных обозначает целые числа в CG?

// Unlit alpha-cutout shader.
// - no lighting
// - no lightmap support
// - no per-material color

Shader "Unlit/Transparent Cutout" {
Properties {
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
}
SubShader {
Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}
LOD 100

Lighting Off

Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fog

#include "UnityCG.cginc"

struct appdata_t {
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
};

struct v2f {
float4 vertex : SV_POSITION;
half2 texcoord : TEXCOORD0;
UNITY_FOG_COORDS(1)
};

sampler2D _MainTex;
float4 _MainTex_ST;
fixed _Cutoff;

v2f vert (appdata_t v)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}

fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.texcoord);
clip(col.a - _Cutoff);
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}

}
Последний раз редактировалось SARJ 07 янв 2016, 20:56, всего редактировалось 1 раз.
SARJ
UNIт
 
Сообщения: 61
Зарегистрирован: 14 июл 2014, 20:47
Откуда: Россия

Re: Передать переменную из вертексного шейдера в вершинный

Сообщение waruiyume 07 янв 2016, 18:30

Вертексный и вершинный- это одно и то же.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Передать переменную из вертексного шейдера в вершинный

Сообщение SARJ 07 янв 2016, 20:56

waruiyume писал(а):Вертексный и вершинный- это одно и то же.

Прошу прощения, из вертексного в фрагментный.
SARJ
UNIт
 
Сообщения: 61
Зарегистрирован: 14 июл 2014, 20:47
Откуда: Россия

Re: Передать переменную из вертексного шейдера в фрагментный

Сообщение waruiyume 07 янв 2016, 21:09

Добавляете в структуру v2f новое поле, и юзайте.
struct v2f {
float4 vertex : SV_POSITION;
half2 texcoord : TEXCOORD0;
UNITY_FOG_COORDS(1)
float myCoolStuff:TEXCOORD1;
};

Кстати, какой тип данных обозначает целые числа в CG?

Видимо int (кэп), вот только, работает это начиная с PS model 4, а то и 5

---------
Я не знаю как работает макрос тумана, возможно, он занимает TEXCOORD1, тогда нужно использовать следующую, т.е. TEXCOORD2
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Передать переменную из вертексного шейдера в фрагментный

Сообщение SARJ 07 янв 2016, 23:24

waruiyume писал(а):Добавляете в структуру v2f новое поле, и юзайте.
struct v2f {
float4 vertex : SV_POSITION;
half2 texcoord : TEXCOORD0;
UNITY_FOG_COORDS(1)
float myCoolStuff:TEXCOORD1;
};

Кстати, какой тип данных обозначает целые числа в CG?

Видимо int (кэп), вот только, работает это начиная с PS model 4, а то и 5

---------
Я не знаю как работает макрос тумана, возможно, он занимает TEXCOORD1, тогда нужно использовать следующую, т.е. TEXCOORD2


Сделал, но не работает

в вертексном шейдере задаю
задаю o.myCoolStuff = 1;

в фрагментном юзаю
if (i.myCoolStuff = 1) {
// Код
}

но Код не срабатывает =(
SARJ
UNIт
 
Сообщения: 61
Зарегистрирован: 14 июл 2014, 20:47
Откуда: Россия

Re: Передать переменную из вертексного шейдера в фрагментный

Сообщение waruiyume 07 янв 2016, 23:31

По первых: флоты через равно не сравнивают, во вторых не "=" а "==".
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Передать переменную из вертексного шейдера в фрагментный

Сообщение SARJ 08 янв 2016, 00:42

waruiyume писал(а):По первых: флоты через равно не сравнивают, во вторых не "=" а "==".

Точно) Спасибо! Теперь работает :ymparty:
SARJ
UNIт
 
Сообщения: 61
Зарегистрирован: 14 июл 2014, 20:47
Откуда: Россия


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

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

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