Просвятите нуба

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

Просвятите нуба

Сообщение Mr_Progger 31 окт 2018, 20:34

Доброго дня. Взялся изучать шейдеры
Разбираю пример
Скрытый текст:
Shader "Debug/Normals" {
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"

// vertex input: position, normal
struct appdata {
float4 vertex : POSITION;
float3 normal : NORMAL;
};

struct v2f {
float4 pos : SV_POSITION;
fixed4 color : COLOR;
};

v2f vert (appdata v) {
v2f o;
o.pos = UnityObjectToClipPos(v.vertex );
o.color.xyz = v.normal * 0.5 + 0.5;
o.color.w = 1.0;
return o;
}

fixed4 frag (v2f i) : SV_Target { return i.color; }
ENDCG
}
}
}

Растолкуйте пожалуйста что такое SV_Target SV_POSITION NORMAL POSITION
Mr_Progger
UNец
 
Сообщения: 28
Зарегистрирован: 25 июл 2017, 18:31

Re: Просвятите нуба

Сообщение seaman 31 окт 2018, 20:53

float4 - это массив из 4 float-ов. Что они представляют шейдеру показывают семантики.
Некоторые семантики описаны тут: https://docs.unity3d.com/Manual/SL-Vert ... nputs.html
Вообще это понятно из самого слова "NORMAL" "POSITION"...
SV_ - означает в координатах экрана.
SV_TARGET - цель - экран (т.е. результат функции отображается на экране).
Бывает еще _ST - это scale/translate
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Просвятите нуба

Сообщение Mr_Progger 02 ноя 2018, 10:32

seaman писал(а):float4 - это массив из 4 float-ов. Что они представляют шейдеру показывают семантики.
Некоторые семантики описаны тут: https://docs.unity3d.com/Manual/SL-Vert ... nputs.html
Вообще это понятно из самого слова "NORMAL" "POSITION"...
SV_ - означает в координатах экрана.
SV_TARGET - цель - экран (т.е. результат функции отображается на экране).
Бывает еще _ST - это scale/translate

Из названий смысл примерно ясен. Не до конца понятно что именно происходит когда указываем "NORMAL" "POSITION" и т.д. Я правильно понимаю если например укажем float4 vertex : POSITION, в переменную vertex компилятор сам положит координаты каждого вертекса(вершины)? А когда указываем float uv : TEXCOORD0; соответственен координаты точек текстуры?
Если префикс SV_, то наоборот, пикселю присваиваем значения переменой?
Если не трудно ткните где можно более подробно почитать про это все, без мат части нехрена не понятно читать документацию
Mr_Progger
UNец
 
Сообщения: 28
Зарегистрирован: 25 июл 2017, 18:31

Re: Просвятите нуба

Сообщение seaman 02 ноя 2018, 19:56

А смысл, если Вы и мое сообщение прочитать не смогли....
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара


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

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

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