RDShaderSource
Исходный код отдельных этапов шейдера для RenderingDevice.
RDShaderSource хранит строки исходного кода и выбранный язык. Для compute задайте SourceCompute и явно вызовите ShaderCompileSpirVFromSource; строка ещё не является скомпилированным GPU-ресурсом. GLSL — язык по умолчанию.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
RDShaderSourceКонструктор
public RDShaderSource();Создаёт объект с пустыми строками всех десяти стадий и Language=Glsl. Не запускает компилятор и не создаёт GPU shader. Перед компиляцией задайте исходник хотя бы нужной стадии; пустые стадии пропускаются.
Свойства11
LanguageСвойство
public RenderingDevice.ShaderLanguage Language { get; set; }Язык исходных строк, изначально ShaderLanguage.Glsl. Setter не переводит текст и не компилирует его. В текущем ShaderCompileSpirVFromSource реализована ветка GLSL при наличии glslang; наличие enum Hlsl не означает поддержку компиляции HLSL этим путём.
SourceAnyHitСвойство
public string SourceAnyHit { get; set; }Исходный текст стадии any-hit: обработка кандидата пересечения, изначально пустой. Getter/Setter используют тот же слот, что GetStageSource/SetStageSource(ShaderStage.AnyHit). Это отдельная стадия, а не файл со всеми секциями. Хранение этой строки проверено, но tessellation/ray compilation и исполнение не проверялись.
SourceClosestHitСвойство
public string SourceClosestHit { get; set; }Исходный текст стадии closest-hit: обработка ближайшего пересечения, изначально пустой. Getter/Setter используют тот же слот, что GetStageSource/SetStageSource(ShaderStage.ClosestHit). Это отдельная стадия, а не файл со всеми секциями. Хранение этой строки проверено, но tessellation/ray compilation и исполнение не проверялись.
SourceComputeСвойство
public string SourceCompute { get; set; }Исходный код compute-этапа. Для GLSL передавайте #version и код ядра без маркера импорта #[compute]; присваивание строки ещё не компилирует шейдер.
SourceFragmentСвойство
public string SourceFragment { get; set; }Исходный текст стадии fragment: выход фрагмента, изначально пустой. Getter/Setter используют тот же слот, что GetStageSource/SetStageSource(ShaderStage.Fragment). Это отдельная стадия, а не файл со всеми секциями. Отдельно вызывайте ShaderCompileSpirVFromSource; setter не создаёт GPU shader.
SourceIntersectionСвойство
public string SourceIntersection { get; set; }Исходный текст стадии intersection: пользовательское пересечение процедурной геометрии, изначально пустой. Getter/Setter используют тот же слот, что GetStageSource/SetStageSource(ShaderStage.Intersection). Это отдельная стадия, а не файл со всеми секциями. Хранение этой строки проверено, но tessellation/ray compilation и исполнение не проверялись.
SourceMissСвойство
public string SourceMiss { get; set; }Исходный текст стадии miss: обработка луча без попадания, изначально пустой. Getter/Setter используют тот же слот, что GetStageSource/SetStageSource(ShaderStage.Miss). Это отдельная стадия, а не файл со всеми секциями. Хранение этой строки проверено, но tessellation/ray compilation и исполнение не проверялись.
SourceRaygenСвойство
public string SourceRaygen { get; set; }Исходный текст стадии ray generation: запуск лучей, изначально пустой. Getter/Setter используют тот же слот, что GetStageSource/SetStageSource(ShaderStage.Raygen). Это отдельная стадия, а не файл со всеми секциями. Хранение этой строки проверено, но tessellation/ray compilation и исполнение не проверялись.
SourceTesselationControlСвойство
public string SourceTesselationControl { get; set; }Исходный текст стадии tessellation control: управление patch, изначально пустой. Getter/Setter используют тот же слот, что GetStageSource/SetStageSource(ShaderStage.TesselationControl). Это отдельная стадия, а не файл со всеми секциями. Хранение этой строки проверено, но tessellation/ray compilation и исполнение не проверялись.
SourceTesselationEvaluationСвойство
public string SourceTesselationEvaluation { get; set; }Исходный текст стадии tessellation evaluation: вычисление tessellated patch, изначально пустой. Getter/Setter используют тот же слот, что GetStageSource/SetStageSource(ShaderStage.TesselationEvaluation). Это отдельная стадия, а не файл со всеми секциями. Хранение этой строки проверено, но tessellation/ray compilation и исполнение не проверялись.
SourceVertexСвойство
public string SourceVertex { get; set; }Исходный текст стадии vertex: обработка вершин, изначально пустой. Getter/Setter используют тот же слот, что GetStageSource/SetStageSource(ShaderStage.Vertex). Это отдельная стадия, а не файл со всеми секциями. Отдельно вызывайте ShaderCompileSpirVFromSource; setter не создаёт GPU shader.
Методы4
GetLanguageRenderingDevice.ShaderLanguage
public RenderingDevice.ShaderLanguage GetLanguage();Возвращает сохранённый Language, изначально Glsl. Значение не проверяет наличие backend компилятора и не подтверждает, что исходник написан на этом языке.
RenderingDevice.ShaderLanguageСохранённый ShaderLanguage, изначально Glsl; не проверка поддержки языка.
GetStageSourcestring
public string GetStageSource(RenderingDevice.ShaderStage stage);Возвращает сохранённый текст одной стадии, изначально пустой. Эквивалентен getter соответствующего Source-поля; не читает файл и не возвращает сгенерированный SPIR-V. Используйте индекс ShaderStage, а не значение …Bit.
| Имя | Тип | По умолчанию |
|---|---|---|
stage | RenderingDevice.ShaderStage | — |
stageИндекс стадии, например ShaderStage.Compute или ShaderStage.Vertex. Не передавайте ComputeBit/VertexBit, маску или Max: это не индекс нужной стадии и может выбрать другую стадию либо вызвать native error.
stringСохранённая строка выбранной стадии; пустая, если её текст не задан.
SetLanguagevoid
public void SetLanguage(RenderingDevice.ShaderLanguage language);Язык исходных строк, изначально ShaderLanguage.Glsl. Setter не переводит текст и не компилирует его. В текущем ShaderCompileSpirVFromSource реализована ветка GLSL при наличии glslang; наличие enum Hlsl не означает поддержку компиляции HLSL этим путём.
| Имя | Тип | По умолчанию |
|---|---|---|
language | RenderingDevice.ShaderLanguage | — |
languageЯзык исходных строк, изначально ShaderLanguage.Glsl. Setter не переводит текст и не компилирует его. В текущем ShaderCompileSpirVFromSource реализована ветка GLSL при наличии glslang; наличие enum Hlsl не означает поддержку компиляции HLSL этим путём.
SetStageSourcevoid
public void SetStageSource(RenderingDevice.ShaderStage stage, string source);Заменяет текст одной стадии без компиляции и изменения других стадий. Передавайте собственно код стадии, например GLSL с #version, без файлового разделителя #[compute] и без shader_type spatial. Значения …Bit не являются индексами для этого метода. Изменение источника не меняет прежние RDShaderSpirV или GPU shader.
| Имя | Тип | По умолчанию |
|---|---|---|
stage | RenderingDevice.ShaderStage | — |
source | string | — |
stageИндекс стадии, например ShaderStage.Compute или ShaderStage.Vertex. Не передавайте ComputeBit/VertexBit, маску или Max: это не индекс нужной стадии и может выбрать другую стадию либо вызвать native error.
sourceПолный текст одной стадии на выбранном Language; без файлового разделителя #[compute]. Не путь и не строка высокоуровневого spatial Shader.