25 #ifndef PXR_IMAGING_HGI_SHADERFUNCTIONDESC_H 26 #define PXR_IMAGING_HGI_SHADERFUNCTIONDESC_H 29 #include "pxr/imaging/hgi/api.h" 30 #include "pxr/imaging/hgi/enums.h" 31 #include "pxr/imaging/hgi/types.h" 36 PXR_NAMESPACE_OPEN_SCOPE
68 std::string nameInShader;
71 HgiShaderTextureType textureType;
76 using HgiShaderFunctionTextureDescVector =
77 std::vector<HgiShaderFunctionTextureDesc>;
113 std::string nameInShader;
117 HgiBindingType binding;
121 using HgiShaderFunctionBufferDescVector =
122 std::vector<HgiShaderFunctionBufferDesc>;
161 std::string nameInShader;
164 int32_t interstageSlot;
165 HgiInterpolationType interpolation;
167 std::string arraySize;
170 using HgiShaderFunctionParamDescVector =
171 std::vector<HgiShaderFunctionParamDesc>;
210 using MemberVector = std::vector<Member>;
212 std::string blockName;
213 std::string instanceName;
214 MemberVector members;
215 std::string arraySize;
216 int32_t interstageSlot;
219 using HgiShaderFunctionParamBlockDescVector =
220 std::vector<HgiShaderFunctionParamBlockDesc>;
234 const HgiShaderFunctionParamBlockDesc::Member& lhs,
235 const HgiShaderFunctionParamBlockDesc::Member& rhs);
239 const HgiShaderFunctionParamBlockDesc::Member& lhs,
240 const HgiShaderFunctionParamBlockDesc::Member& rhs);
291 enum class PatchType { Quad, Triangle };
295 PatchType patchType = PatchType::Triangle;
296 uint32_t numVertsPerPatchIn = 3;
297 uint32_t numVertsPerPatchOut = 3;
324 bool earlyFragmentTests;
381 std::string debugName;
382 HgiShaderStage shaderStage;
383 const char *shaderCodeDeclarations;
384 const char *shaderCode;
385 std::string *generatedShaderCodeOut;
386 std::vector<HgiShaderFunctionTextureDesc> textures;
387 std::vector<HgiShaderFunctionBufferDesc> buffers;
388 std::vector<HgiShaderFunctionParamDesc> constantParams;
389 std::vector<HgiShaderFunctionParamDesc> stageGlobalMembers;
390 std::vector<HgiShaderFunctionParamDesc> stageInputs;
391 std::vector<HgiShaderFunctionParamDesc> stageOutputs;
392 std::vector<HgiShaderFunctionParamBlockDesc> stageInputBlocks;
393 std::vector<HgiShaderFunctionParamBlockDesc> stageOutputBlocks;
399 using HgiShaderFunctionDescVector =
400 std::vector<HgiShaderFunctionDesc>;
415 HgiShaderFunctionAddTexture(
417 const std::string &nameInShader,
418 uint32_t dimensions = 2,
419 const HgiFormat &format = HgiFormatFloat32Vec4,
420 const HgiShaderTextureType textureType = HgiShaderTextureTypeTexture);
425 HgiShaderFunctionAddArrayOfTextures(
427 const std::string &nameInShader,
428 const uint32_t arraySize,
429 const uint32_t dimensions = 2,
430 const HgiFormat &format = HgiFormatFloat32Vec4,
431 const HgiShaderTextureType textureType = HgiShaderTextureTypeTexture);
436 HgiShaderFunctionAddWritableTexture(
438 const std::string &nameInShader,
439 const uint32_t dimensions = 2,
440 const HgiFormat &format = HgiFormatFloat32Vec4,
441 const HgiShaderTextureType textureType = HgiShaderTextureTypeTexture);
446 HgiShaderFunctionAddBuffer(
448 const std::string &nameInShader,
449 const std::string &type,
450 const uint32_t bindIndex,
451 HgiBindingType binding,
452 const uint32_t arraySize = 0);
457 HgiShaderFunctionAddWritableBuffer(
459 const std::string &nameInShader,
460 const std::string &type,
461 const uint32_t bindIndex);
467 HgiShaderFunctionAddConstantParam(
469 const std::string &nameInShader,
470 const std::string &type,
471 const std::string &role = std::string());
478 HgiShaderFunctionAddStageInput(
480 const std::string &nameInShader,
481 const std::string &type,
482 const std::string &role = std::string());
488 HgiShaderFunctionAddStageInput(
495 HgiShaderFunctionAddGlobalVariable(
497 const std::string &nameInShader,
498 const std::string &type,
499 const std::string &arraySize);
505 HgiShaderFunctionAddStageOutput(
507 const std::string &nameInShader,
508 const std::string &type,
509 const std::string &role = std::string());
515 HgiShaderFunctionAddStageOutput(
517 const std::string &nameInShader,
518 const std::string &type,
519 const uint32_t location);
525 HgiShaderFunctionAddStageOutput(
529 PXR_NAMESPACE_CLOSE_SCOPE
Describes a buffer to be passed into a shader.
AR_API bool operator!=(const ArAssetInfo &lhs, const ArAssetInfo &rhs)
AR_API bool operator==(const ArAssetInfo &lhs, const ArAssetInfo &rhs)
Describes a tessellation function's description.
Describes a param passed into a shader or between shader stages.
Describes a compute function's description.
Basic type for a vector of 3 int components.
Describes an interstage param block between shader stages.
Describes a texture to be passed into a shader.
Describes a fragment function's description.
Describes the properties needed to create a GPU shader function.