Глава вторая
2D(или полноэкранные) шейдеры
Добавление текстуры в шейдер
Shader "Tutorial/Texture"
{
Properties
{
_MainTex("Texture", 2D) = "white" {}
// В предыдущей части в качестве свойства был цвет,
// а теперь текстура, в Inspector будет предложено
// выбрать одну. Здесь "white" это значение по умолчанию,
// означает, что будет создана текстура белого цвета.
}
SubShader
{
Cull Off
ZWrite Off
ZTest Always
Pass
{
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
// sampler2D - это тип переменной который надо ставить когда
// мы хотим работать с текстурой, заметьте, что имя переменной
// _MainTex совпадает с именем свойства в блоке Properties,
// это обязательно для корректной работы.
fixed4 frag(v2f_img i) : COLOR
{
// Следующая строка позволяет нам получить цвет пикселя в точке
// с которой мы работаем в этой итерации, если помните, то ранее
// было сказано, что фрагментный шейдер работает с каждым видимым
// пикселем объекта.
// tex2D - это готовая функция для получения значения цвета,
// первый параметр (_MainTex) это из какой текстуры мы хотим
// получить цвет, а второй (i.uv) это UV координаты в которых
// мы хотим узнать цвет.
fixed4 col = tex2D(_MainTex, i.uv);
col = 1 - col;
// Инверсия цвета, цвет в шейдере представлен 4-мя компонентами
// RedGreenBlueAlpha - КрасныйЗелёныйСинийНепрозрачность,
// причём значение каждого компонента в диапазоне от 0 до 1
return col;
}
ENDCG
}
}
}Смешение текстур
Наложение одной текстуры поверх другой
Last updated