Метод ID3D12StateObjectProperties::GetShaderStackSize (d3d12.h)
Возвращает объем памяти стека, необходимый для вызова шейдера для трассировки лучей в HLSL.
Синтаксис
UINT64 GetShaderStackSize(
LPCWSTR pExportName
);
Параметры
pExportName
Точка входа шейдера в объекте состояния, для которого требуется получить размер стека. Для групп попаданий необходимо указать отдельный шейдер в группе попаданий с помощью синтаксиса:
hitGroupName::shaderType
Где hitGroupName — имя точки входа для группы попаданий, а шейдерType — одно из следующих:
- пересечению
- anyhit
- ближайшиеhit
Пример значения: "myTreeLeafHitGroup::anyhit".
Возвращаемое значение
Объем памяти стека в байтах, необходимый для вызова шейдера. Если шейдер не полностью разрешен в объекте состояния, шейдер неизвестен или тип, для которого размер стека не имеет значения, например группа попаданий, возвращаемое значение будет 0xffffffff. 32-разрядное значение 0xffffffff используется для возвращаемого значения UINT64, чтобы гарантировать, что неправильные возвращаемые значения не будут потеряны при сумме с другими значениями при вычислении общего размера стека конвейера.
Комментарии
Этот метод необходимо вызывать только в том случае, если приложение хочет настроить размер стека путем вызова Метода SetPipelineStackSize, а не на основе консервативного размера стека по умолчанию. Этот метод допустим только для шейдеров создания лучей, групп попаданий, шейдеров промахов и вызываемых шейдеров. Даже шейдеры создания лучей могут возвращать ненулевое значение, несмотря на то, что они располагаются в нижней части стека.
Для групп попаданий необходимо запрашивать размер стека для отдельных шейдеров, составляющих его (шейдеры пересечения, любые шейдеры нажатия, ближайшие шейдеры), так как каждый из них, вероятно, имеет разные требования к размеру стека. Размер стека нельзя напрямую запрашивать к этим отдельным шейдерам, так как способ их компиляции может зависеть от общей группы попаданий, содержащей их. Параметр pExportName включает синтаксис для идентификации отдельных шейдеров в группе попаданий.
Этот API можно вызывать для объектов состояния коллекции или объектов состояния конвейера raytracing.
Требования
Целевая платформа | Windows |
Header | d3d12.h |
Библиотека | D3D12.lib |
DLL | D3D12.dll |