Глава первая
Подробный разбор простейшего шейдера
Shader "Tutorial/Simpliest" // Shader - обязательное начало для любого шейдера,
// после этого ключевого слова в
// кавычках пишется url-подобное имя шейдера
{
Properties // блок свойств, которые будут отображаться во вкладке
// inspector в Unity
{
_Color ("Color", Color) = (0.5,0.6,0.7,1)
//Каждая строка связана с переменной и содержит следующие данные:
// _Color - имя переменной, оно должно совпадать по написанию с
// одной из переменных внутри CGPROGRAM
// "Color" - текст, который будет отображаться в окне
// Inspector перед значением переменной
// Color - тип данных, от него зависит как будет выглядеть
// блок выбора значения в Inspector, бывает
// 5 типов данных:
// Color - выглядит как выбор цвета,
// Vector - как 4 текстовых поля ввода,
// Float - поле ввода одного числа с плавающей запятой,
// 2D - текстура,
// CUBE - выбор кубической текстуры
// (0.5,0.6,0.7,1) - значение переменной по умолчанию
}
SubShader // в одном шейдере может быть несколько этих блоков,
// но одновременно работать может только один
{
// No culling or depth
// Это зарезервированные слова, в этом шейдере они указаны
// для упрощения работы GPU, благодаря им потребуется меньше
// вычислений для отображения шейдера, а ZTest Always говорит
// о том, что этот шейдер будет рисовать объект поверх всех остальных
Cull Off
ZWrite Off
ZTest Always
Pass // этих блоков может быть несколько внутри одного SubShader,
// каждый Pass это отдельный проход рендера по объекту с этим
// шейдером, результат следующего Pass рисуется поверх предыдущего
{
CGPROGRAM // Зарезервированное слово, оно лишь отмечает начало
// кода самого шейдера
#pragma vertex vert_img // использовать для вертексного шейдера
// vert_img, которая описана не нами
#pragma fragment frag // для фрагментного шейдера использовать
//функцию frag, описанную ниже
#include "UnityCG.cginc" // позволяет нам использовать готовые функции,
// написанные командой Unity
// в их числе и vert_img, код файла можно найти
// в файле:
// %UNITY%\Editor\Data\CGIncludes\UnityCG.cginc
fixed4 _Color; // fixed4 - тип переменной, именно этот тип представляет
// собой структуру из 4х переменных типа fixed
fixed4 frag (v2f_img i) : COLOR
{
fixed4 col = _Color;
return col;
}
ENDCG // Зарезервированное слово, оно отмечает конец кода самого шейдера
}
}
}Last updated