Functions.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright (C) 2009-2021, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma once
  6. #include <AnKi/Gr/Common.h>
  7. #include <AnKi/Math.h>
  8. namespace anki {
  9. inline Bool stencilTestDisabled(StencilOperation stencilFail, StencilOperation stencilPassDepthFail,
  10. StencilOperation stencilPassDepthPass, CompareOperation compare)
  11. {
  12. return stencilFail == StencilOperation::KEEP && stencilPassDepthFail == StencilOperation::KEEP
  13. && stencilPassDepthPass == StencilOperation::KEEP && compare == CompareOperation::ALWAYS;
  14. }
  15. inline Bool blendingDisabled(BlendFactor srcFactorRgb, BlendFactor dstFactorRgb, BlendFactor srcFactorA,
  16. BlendFactor dstFactorA, BlendOperation opRgb, BlendOperation opA)
  17. {
  18. Bool dontWantBlend = srcFactorRgb == BlendFactor::ONE && dstFactorRgb == BlendFactor::ZERO
  19. && srcFactorA == BlendFactor::ONE && dstFactorA == BlendFactor::ZERO
  20. && (opRgb == BlendOperation::ADD || opRgb == BlendOperation::SUBTRACT)
  21. && (opA == BlendOperation::ADD || opA == BlendOperation::SUBTRACT);
  22. return dontWantBlend;
  23. }
  24. /// Using an AnKi typename get the ShaderVariableDataType. Used for debugging.
  25. template<typename T>
  26. ShaderVariableDataType getShaderVariableTypeFromTypename();
  27. #define ANKI_SVDT_MACRO(capital, type, baseType, rowCount, columnCount) \
  28. template<> \
  29. inline ShaderVariableDataType getShaderVariableTypeFromTypename<type>() \
  30. { \
  31. return ShaderVariableDataType::capital; \
  32. }
  33. #include <AnKi/Gr/ShaderVariableDataTypeDefs.h>
  34. #undef ANKI_SVDT_MACRO
  35. /// Populate the memory of a variable that is inside a shader block.
  36. void writeShaderBlockMemory(ShaderVariableDataType type, const ShaderVariableBlockInfo& varBlkInfo,
  37. const void* elements, U32 elementsCount, void* buffBegin, const void* buffEnd);
  38. /// Convert a ShaderVariableDataType to string.
  39. const CString shaderVariableDataTypeToString(ShaderVariableDataType t);
  40. } // end namespace anki