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
70 std::string nameInShader;
73 HgiShaderTextureType textureType;
79 using HgiShaderFunctionTextureDescVector =
80 std::vector<HgiShaderFunctionTextureDesc>;
116 std::string nameInShader;
120 HgiBindingType binding;
124 using HgiShaderFunctionBufferDescVector =
125 std::vector<HgiShaderFunctionBufferDesc>;
168 std::string nameInShader;
171 int32_t interstageSlot;
172 HgiInterpolationType interpolation;
173 HgiSamplingType sampling;
174 HgiStorageType storage;
176 std::string arraySize;
179 using HgiShaderFunctionParamDescVector =
180 std::vector<HgiShaderFunctionParamDesc>;
219 using MemberVector = std::vector<Member>;
221 std::string blockName;
222 std::string instanceName;
223 MemberVector members;
224 std::string arraySize;
225 int32_t interstageSlot;
228 using HgiShaderFunctionParamBlockDescVector =
229 std::vector<HgiShaderFunctionParamBlockDesc>;
243 const HgiShaderFunctionParamBlockDesc::Member& lhs,
244 const HgiShaderFunctionParamBlockDesc::Member& rhs);
248 const HgiShaderFunctionParamBlockDesc::Member& lhs,
249 const HgiShaderFunctionParamBlockDesc::Member& rhs);
304 enum class PatchType { Triangles, Quads, Isolines };
305 enum class Spacing { Equal, FractionalEven, FractionalOdd };
306 enum class Ordering { CW, CCW };
313 std::string numVertsPerPatchIn;
314 std::string numVertsPerPatchOut;
343 enum class InPrimitiveType {
344 Points, Lines, LinesAdjacency, Triangles, TrianglesAdjacency };
345 enum class OutPrimitiveType {
346 Points, LineStrip, TriangleStrip };
351 InPrimitiveType inPrimitiveType;
352 OutPrimitiveType outPrimitiveType;
353 std::string outMaxVertices;
380 bool earlyFragmentTests;
441 std::string debugName;
442 HgiShaderStage shaderStage;
443 const char *shaderCodeDeclarations;
444 const char *shaderCode;
445 std::string *generatedShaderCodeOut;
446 std::vector<HgiShaderFunctionTextureDesc> textures;
447 std::vector<HgiShaderFunctionBufferDesc> buffers;
448 std::vector<HgiShaderFunctionParamDesc> constantParams;
449 std::vector<HgiShaderFunctionParamDesc> stageGlobalMembers;
450 std::vector<HgiShaderFunctionParamDesc> stageInputs;
451 std::vector<HgiShaderFunctionParamDesc> stageOutputs;
452 std::vector<HgiShaderFunctionParamBlockDesc> stageInputBlocks;
453 std::vector<HgiShaderFunctionParamBlockDesc> stageOutputBlocks;
460 using HgiShaderFunctionDescVector =
461 std::vector<HgiShaderFunctionDesc>;
476 HgiShaderFunctionAddTexture(
478 const std::string &nameInShader,
479 const uint32_t bindIndex = 0,
480 uint32_t dimensions = 2,
481 const HgiFormat &format = HgiFormatFloat32Vec4,
482 const HgiShaderTextureType textureType = HgiShaderTextureTypeTexture);
487 HgiShaderFunctionAddArrayOfTextures(
489 const std::string &nameInShader,
490 const uint32_t arraySize,
491 const uint32_t bindIndex = 0,
492 const uint32_t dimensions = 2,
493 const HgiFormat &format = HgiFormatFloat32Vec4,
494 const HgiShaderTextureType textureType = HgiShaderTextureTypeTexture);
499 HgiShaderFunctionAddWritableTexture(
501 const std::string &nameInShader,
502 const uint32_t bindIndex = 0,
503 const uint32_t dimensions = 2,
504 const HgiFormat &format = HgiFormatFloat32Vec4,
505 const HgiShaderTextureType textureType = HgiShaderTextureTypeTexture);
510 HgiShaderFunctionAddBuffer(
512 const std::string &nameInShader,
513 const std::string &type,
514 const uint32_t bindIndex,
515 HgiBindingType binding,
516 const uint32_t arraySize = 0);
521 HgiShaderFunctionAddWritableBuffer(
523 const std::string &nameInShader,
524 const std::string &type,
525 const uint32_t bindIndex);
531 HgiShaderFunctionAddConstantParam(
533 const std::string &nameInShader,
534 const std::string &type,
535 const std::string &role = std::string());
542 HgiShaderFunctionAddStageInput(
544 const std::string &nameInShader,
545 const std::string &type,
546 const std::string &role = std::string());
552 HgiShaderFunctionAddStageInput(
559 HgiShaderFunctionAddGlobalVariable(
561 const std::string &nameInShader,
562 const std::string &type,
563 const std::string &arraySize);
569 HgiShaderFunctionAddStageOutput(
571 const std::string &nameInShader,
572 const std::string &type,
573 const std::string &role = std::string());
579 HgiShaderFunctionAddStageOutput(
581 const std::string &nameInShader,
582 const std::string &type,
583 const uint32_t location);
589 HgiShaderFunctionAddStageOutput(
593 PXR_NAMESPACE_CLOSE_SCOPE
Describes a geometry function's description.
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.