RDShaderSpirV
Байткод SPIR-V и диагностика по этапам шейдера.
RDShaderSpirV содержит байты и ошибки этапов. Наличие объекта не доказывает успех компиляции: проверяйте ошибку нужного этапа и наличие байткода. Затем создайте шейдер на конкретном RenderingDevice.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
RDShaderSpirVКонструктор
public RDShaderSpirV();Создаёт Resource с пустыми bytecode и строкой ошибки каждой стадии. Пустая ошибка здесь означает лишь отсутствие сообщения: никакая стадия ещё не скомпилирована. Объект не является GPU RID.
Свойства20
BytecodeAnyHitСвойство
public byte[] BytecodeAnyHit { get; set; }Байты SPIR-V стадии any-hit: обработка кандидата пересечения, изначально пустые. Getter даёт копию byte[]; setter сохраняет данные без проверки, не очищает CompileErrorAnyHit и не вызывает Changed. Для tessellation/ray наличие поля не подтверждает поддержку GPU.
BytecodeClosestHitСвойство
public byte[] BytecodeClosestHit { get; set; }Байты SPIR-V стадии closest-hit: обработка ближайшего пересечения, изначально пустые. Getter даёт копию byte[]; setter сохраняет данные без проверки, не очищает CompileErrorClosestHit и не вызывает Changed. Для tessellation/ray наличие поля не подтверждает поддержку GPU.
BytecodeComputeСвойство
public byte[] BytecodeCompute { get; set; }Байты SPIR-V compute-этапа, а не текст GLSL и не готовый RID pipeline. Проверяйте CompileErrorCompute перед созданием GPU-шейдера.
BytecodeFragmentСвойство
public byte[] BytecodeFragment { get; set; }Байты SPIR-V стадии fragment: выход фрагмента, изначально пустые. Getter даёт копию byte[]; setter сохраняет данные без проверки, не очищает CompileErrorFragment и не вызывает Changed. Для tessellation/ray наличие поля не подтверждает поддержку GPU.
BytecodeIntersectionСвойство
public byte[] BytecodeIntersection { get; set; }Байты SPIR-V стадии intersection: пользовательское пересечение процедурной геометрии, изначально пустые. Getter даёт копию byte[]; setter сохраняет данные без проверки, не очищает CompileErrorIntersection и не вызывает Changed. Для tessellation/ray наличие поля не подтверждает поддержку GPU.
BytecodeMissСвойство
public byte[] BytecodeMiss { get; set; }Байты SPIR-V стадии miss: обработка луча без попадания, изначально пустые. Getter даёт копию byte[]; setter сохраняет данные без проверки, не очищает CompileErrorMiss и не вызывает Changed. Для tessellation/ray наличие поля не подтверждает поддержку GPU.
BytecodeRaygenСвойство
public byte[] BytecodeRaygen { get; set; }Байты SPIR-V стадии ray generation: запуск лучей, изначально пустые. Getter даёт копию byte[]; setter сохраняет данные без проверки, не очищает CompileErrorRaygen и не вызывает Changed. Для tessellation/ray наличие поля не подтверждает поддержку GPU.
BytecodeTesselationControlСвойство
public byte[] BytecodeTesselationControl { get; set; }Байты SPIR-V стадии tessellation control: управление patch, изначально пустые. Getter даёт копию byte[]; setter сохраняет данные без проверки, не очищает CompileErrorTesselationControl и не вызывает Changed. Для tessellation/ray наличие поля не подтверждает поддержку GPU.
BytecodeTesselationEvaluationСвойство
public byte[] BytecodeTesselationEvaluation { get; set; }Байты SPIR-V стадии tessellation evaluation: вычисление tessellated patch, изначально пустые. Getter даёт копию byte[]; setter сохраняет данные без проверки, не очищает CompileErrorTesselationEvaluation и не вызывает Changed. Для tessellation/ray наличие поля не подтверждает поддержку GPU.
BytecodeVertexСвойство
public byte[] BytecodeVertex { get; set; }Байты SPIR-V стадии vertex: обработка вершин, изначально пустые. Getter даёт копию byte[]; setter сохраняет данные без проверки, не очищает CompileErrorVertex и не вызывает Changed. Для tessellation/ray наличие поля не подтверждает поддержку GPU.
CompileErrorAnyHitСвойство
public string CompileErrorAnyHit { get; set; }Сохранённая диагностика стадии any-hit: обработка кандидата пересечения, изначально пустая. Пустота не доказывает компиляцию: проверьте также BytecodeAnyHit. Ручная запись меняет только сообщение и не вызывает Changed; она не исправляет шейдер.
CompileErrorClosestHitСвойство
public string CompileErrorClosestHit { get; set; }Сохранённая диагностика стадии closest-hit: обработка ближайшего пересечения, изначально пустая. Пустота не доказывает компиляцию: проверьте также BytecodeClosestHit. Ручная запись меняет только сообщение и не вызывает Changed; она не исправляет шейдер.
CompileErrorComputeСвойство
public string CompileErrorCompute { get; set; }Диагностика компиляции compute-этапа. Проверяйте её до ShaderCreateFromSpirV; непустая ошибка означает, что создавать шейдер из этого результата нельзя. Пустая строка не заменяет проверку наличия нужного байткода.
CompileErrorFragmentСвойство
public string CompileErrorFragment { get; set; }Сохранённая диагностика стадии fragment: выход фрагмента, изначально пустая. Пустота не доказывает компиляцию: проверьте также BytecodeFragment. Ручная запись меняет только сообщение и не вызывает Changed; она не исправляет шейдер.
CompileErrorIntersectionСвойство
public string CompileErrorIntersection { get; set; }Сохранённая диагностика стадии intersection: пользовательское пересечение процедурной геометрии, изначально пустая. Пустота не доказывает компиляцию: проверьте также BytecodeIntersection. Ручная запись меняет только сообщение и не вызывает Changed; она не исправляет шейдер.
CompileErrorMissСвойство
public string CompileErrorMiss { get; set; }Сохранённая диагностика стадии miss: обработка луча без попадания, изначально пустая. Пустота не доказывает компиляцию: проверьте также BytecodeMiss. Ручная запись меняет только сообщение и не вызывает Changed; она не исправляет шейдер.
CompileErrorRaygenСвойство
public string CompileErrorRaygen { get; set; }Сохранённая диагностика стадии ray generation: запуск лучей, изначально пустая. Пустота не доказывает компиляцию: проверьте также BytecodeRaygen. Ручная запись меняет только сообщение и не вызывает Changed; она не исправляет шейдер.
CompileErrorTesselationControlСвойство
public string CompileErrorTesselationControl { get; set; }Сохранённая диагностика стадии tessellation control: управление patch, изначально пустая. Пустота не доказывает компиляцию: проверьте также BytecodeTesselationControl. Ручная запись меняет только сообщение и не вызывает Changed; она не исправляет шейдер.
CompileErrorTesselationEvaluationСвойство
public string CompileErrorTesselationEvaluation { get; set; }Сохранённая диагностика стадии tessellation evaluation: вычисление tessellated patch, изначально пустая. Пустота не доказывает компиляцию: проверьте также BytecodeTesselationEvaluation. Ручная запись меняет только сообщение и не вызывает Changed; она не исправляет шейдер.
CompileErrorVertexСвойство
public string CompileErrorVertex { get; set; }Сохранённая диагностика стадии vertex: обработка вершин, изначально пустая. Пустота не доказывает компиляцию: проверьте также BytecodeVertex. Ручная запись меняет только сообщение и не вызывает Changed; она не исправляет шейдер.
Методы5
GetStageBytecodebyte[]
public byte[] GetStageBytecode(RenderingDevice.ShaderStage stage);Возвращает byte[] выбранной стадии, изначально пустой. Это копия данных CPU: изменение возвращённого массива не редактирует ресурс и не является GPU readback. Наличие байтов само по себе не подтверждает корректность SPIR-V.
| Имя | Тип | По умолчанию |
|---|---|---|
stage | RenderingDevice.ShaderStage | — |
stageИндекс стадии, например ShaderStage.Compute или ShaderStage.Vertex. Не передавайте ComputeBit/VertexBit, маску или Max: это не индекс нужной стадии и может выбрать другую стадию либо вызвать native error.
byte[]Копия byte[] выбранной стадии; может быть пустой или содержать вручную записанные невалидные данные.
GetStageCompileErrorstring
public string GetStageCompileError(RenderingDevice.ShaderStage stage);Возвращает сохранённую строку диагностики выбранной стадии, изначально пустую. Не запускает компилятор. Проверяйте также bytecode: у отсутствующей или новой стадии строка тоже пустая.
| Имя | Тип | По умолчанию |
|---|---|---|
stage | RenderingDevice.ShaderStage | — |
stageИндекс стадии, например ShaderStage.Compute или ShaderStage.Vertex. Не передавайте ComputeBit/VertexBit, маску или Max: это не индекс нужной стадии и может выбрать другую стадию либо вызвать native error.
stringСохранённое сообщение; пустая строка сама по себе не означает успешную компиляцию.
SetStageBytecode2 перегрузки
public void SetStageBytecode(RenderingDevice.ShaderStage stage, byte[] bytecode);Сохраняет копию байтов одной стадии; доступны byte[] и ReadOnlySpan<byte>. Не валидирует SPIR-V, не компилирует текст, не очищает ошибку стадии и не пересоздаёт GPU shader. Setter не вызывает Resource.Changed. Передавайте индекс стадии, а не маску …Bit.
| Имя | Тип | По умолчанию |
|---|---|---|
stage | RenderingDevice.ShaderStage | — |
bytecode | byte[] | — |
stageИндекс стадии, например ShaderStage.Compute или ShaderStage.Vertex. Не передавайте ComputeBit/VertexBit, маску или Max: это не индекс нужной стадии и может выбрать другую стадию либо вызвать native error.
bytecodeБайты или span для копирования в слот стадии. Setter не подтверждает корректность SPIR-V и не очищает stage error.
public void SetStageBytecode(RenderingDevice.ShaderStage stage, ReadOnlySpan<byte> bytecode);Сохраняет копию байтов одной стадии; доступны byte[] и ReadOnlySpan<byte>. Не валидирует SPIR-V, не компилирует текст, не очищает ошибку стадии и не пересоздаёт GPU shader. Setter не вызывает Resource.Changed. Передавайте индекс стадии, а не маску …Bit.
| Имя | Тип | По умолчанию |
|---|---|---|
stage | RenderingDevice.ShaderStage | — |
bytecode | ReadOnlySpan<byte> | — |
stageИндекс стадии, например ShaderStage.Compute или ShaderStage.Vertex. Не передавайте ComputeBit/VertexBit, маску или Max: это не индекс нужной стадии и может выбрать другую стадию либо вызвать native error.
bytecodeБайты или span для копирования в слот стадии. Setter не подтверждает корректность SPIR-V и не очищает stage error.
SetStageCompileErrorvoid
public void SetStageCompileError(RenderingDevice.ShaderStage stage, string compileError);Сохраняет сообщение стадии независимо от её байтов. Пустая строка очищает только диагностику: не компилирует, не восстанавливает bytecode и не делает неверный SPIR-V корректным. Setter не вызывает Resource.Changed.
| Имя | Тип | По умолчанию |
|---|---|---|
stage | RenderingDevice.ShaderStage | — |
compileError | string | — |
stageИндекс стадии, например ShaderStage.Compute или ShaderStage.Vertex. Не передавайте ComputeBit/VertexBit, маску или Max: это не индекс нужной стадии и может выбрать другую стадию либо вызвать native error.
compileErrorДиагностическая строка; пустая очищает только сообщение, оставляя bytecode без изменений.