Shader
Ресурс программы шейдера и общих настроек.
У текстового Shader Code хранит исходный текст, а shader_type определяет режим и доступные этапы. GetMode не является проверкой компиляции. Shader может разделяться материалами; default-текстуры общие, а индивидуальные значения задаются на ShaderMaterial.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
ShaderКонструктор
public Shader();Создаёт пустой текстовый Shader с режимом Spatial по умолчанию. Назначьте Code с shader_type перед использованием. GetMode у пустого ресурса не доказывает, что задан работоспособный шейдер.
Свойства1
CodeСвойство
public string Code { get; set; }Исходный текст shader-ресурса на shading language Reckfell. Указывает shader_type и функции стадий; это не C# и не полный OpenGL/Vulkan shader-файл. Чтение строки или GetMode не подтверждает успешную компиляцию: проверяйте диагностику и реальный кадр.
Методы9
GetCodestring
public string GetCode();Возвращает исходный текст шейдера с директивами препроцессора. Это не развёрнутый исходник backend и не байткод GPU.
stringИсходный текст, присвоенный ресурсу Shader.
GetDefaultTextureParameterTexture
public Texture GetDefaultTextureParameter(StringName name, int index = 0);Читает текстуру по умолчанию, назначенную ресурсу Shader для имени и индекса. Это не значение конкретного ShaderMaterial и не встроенная fallback-текстура hint_default_white. Метод не подтверждает наличие uniform в текущем коде.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
index | int | 0 |
nameИмя sampler uniform без префикса shader_parameter/.
indexИндекс элемента sampler-массива; для одиночного sampler обычно 0.
TextureНазначенный Texture либо null, если записи с данным именем/индексом нет.
GetModeShader.Mode
public Shader.Mode GetMode();Возвращает выбранный тип shader-ресурса: например Spatial для 3D, CanvasItem для 2D или Fog для объёмного тумана. Тип определяется по shader_type после preprocessing; сам результат не является проверкой отсутствия ошибок.
Shader.ModeЗначение Shader.Mode. Для Terrain.reckfellshader с shader_type spatial проверено Spatial.
GetShaderUniformListReckfell.Collections.Array
public Reckfell.Collections.Array GetShaderUniformList(bool getGroups = false);Возвращает метаданные обычных material uniform для проверки имён и типов. В текущем пути рендеринга instance/global uniform не входят в этот список; это не чтение текущих значений материала.
| Имя | Тип | По умолчанию |
|---|---|---|
getGroups | bool | false |
getGroupsЕсли true, включает записи групп и подгрупп. По умолчанию false: они пропускаются. Не считайте запись группы обычным uniform.
Reckfell.Collections.ArrayArray записей Dictionary с метаданными PropertyInfo, включая name и type. В примере имя читается через entry.AsReckfellDictionary()["name"].AsString(). Значения uniform читайте отдельно.
InspectNativeShaderCodevoid
public void InspectNativeShaderCode();Запрашивает просмотр кода драйвера через отложенный вызов редакторского просмотрщика, если он доступен. Не возвращает строку и не заменяет GetCode: GetCode содержит текст ресурса, а не native-код. Не рассчитывайте на открытие окна в обычном игровом запуске без просмотрщика.
SetCodevoid
public void SetCode(string code);Заменяет исходник и запускает обработку директив и зависимостей include. Для относительных путей у ресурса без ResourcePath задайте SetIncludePath до этого вызова; смена исходника затрагивает материалы, использующие общий Shader.
| Имя | Тип | По умолчанию |
|---|---|---|
code | string | — |
codeПолный исходник языка шейдеров движка с подходящим shader_type, не произвольный raw GLSL compute.
SetDefaultTextureParameter2 перегрузки
public void SetDefaultTextureParameter(StringName name, Texture texture, int index = 0);Назначает общую текстуру по умолчанию на Shader. Используется материалами без собственного значения. null снимает запись данного индекса, не переопределения материалов. Текущий GetShaderUniformList скрывает uniform при наличии хотя бы одного такого назначения. Для универсального Texture используйте соответствующую перегрузку.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
texture | Texture | — |
index | int | 0 |
nameТочное имя sampler uniform, например source_texture.
textureПодходящая текстура или null для снятия назначения. Это настройка Shader, не отдельного материала.
indexСуществующий элемент sampler-массива; 0 для обычного sampler.
public void SetDefaultTextureParameter(StringName name, Texture2D texture, int index);Вариант назначения общей текстуры с параметром Texture2D; передаёт её в ту же реализацию. Используется материалами без собственного значения. null снимает запись данного индекса, не переопределения материалов. Текущий GetShaderUniformList скрывает uniform при наличии хотя бы одного такого назначения. Для универсального Texture используйте соответствующую перегрузку.
| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
texture | Texture2D | — |
index | int | — |
nameТочное имя sampler uniform, например source_texture.
textureПодходящая текстура или null для снятия назначения. Это настройка Shader, не отдельного материала.
indexСуществующий элемент sampler-массива; 0 для обычного sampler.
SetIncludePathvoid
public void SetIncludePath(string path);Задаёт запасное имя базового файла для разрешения относительных include, если у Shader ещё нет ResourcePath. Передайте полный путь файла до SetCode; этот вызов сам не пересобирает исходник.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathПолный базовый путь файла шейдера, например asset://effects/Main.reckfellshader, не только папка.
Shader.Mode
| Значение | Описание |
|---|---|
CanvasItem = 1 | Режим, используемый для рисования всех 2D-объектов. |
Fog = 4 | Режим, используемый для настройки цвета и плотности эффекта объемного тумана. |
Particles = 2 | Режим, используемый для расчета информации о частицах на основе каждой частицы. Не используется для рисования. |
Sky = 3 | Режим, используемый для рисования неба. Работает только с шейдерами, прикрепленными к объектам |
Spatial = 0 | Режим, используемый для отрисовки всех 3D-объектов. |
TextureBlit = 5 | Режим используется для прорисовки ресурсов DrawableTexture с помощью blit вызовов. |