Functions.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. {
  10. inline Bool stencilTestDisabled(StencilOperation stencilFail, StencilOperation stencilPassDepthFail,
  11. StencilOperation stencilPassDepthPass, CompareOperation compare)
  12. {
  13. return stencilFail == StencilOperation::KEEP && stencilPassDepthFail == StencilOperation::KEEP
  14. && stencilPassDepthPass == StencilOperation::KEEP && compare == CompareOperation::ALWAYS;
  15. }
  16. inline Bool blendingDisabled(BlendFactor srcFactorRgb, BlendFactor dstFactorRgb, BlendFactor srcFactorA,
  17. BlendFactor dstFactorA, BlendOperation opRgb, BlendOperation opA)
  18. {
  19. Bool dontWantBlend = srcFactorRgb == BlendFactor::ONE && dstFactorRgb == BlendFactor::ZERO
  20. && srcFactorA == BlendFactor::ONE && dstFactorA == BlendFactor::ZERO
  21. && (opRgb == BlendOperation::ADD || opRgb == BlendOperation::SUBTRACT)
  22. && (opA == BlendOperation::ADD || opA == BlendOperation::SUBTRACT);
  23. return dontWantBlend;
  24. }
  25. /// Using an AnKi typename get the ShaderVariableDataType. Used for debugging.
  26. template<typename T>
  27. ShaderVariableDataType getShaderVariableTypeFromTypename();
  28. #define ANKI_SVDT_MACRO(capital, type, baseType, rowCount, columnCount) \
  29. template<> \
  30. inline ShaderVariableDataType getShaderVariableTypeFromTypename<type>() \
  31. { \
  32. return ShaderVariableDataType::capital; \
  33. }
  34. #include <AnKi/Gr/ShaderVariableDataTypeDefs.h>
  35. #undef ANKI_SVDT_MACRO
  36. /// Populate the memory of a variable that is inside a shader block.
  37. void writeShaderBlockMemory(ShaderVariableDataType type, const ShaderVariableBlockInfo& varBlkInfo,
  38. const void* elements, U32 elementsCount, void* buffBegin, const void* buffEnd);
  39. /// Convert a ShaderVariableDataType to string.
  40. const CString shaderVariableDataTypeToString(ShaderVariableDataType t);
  41. } // end namespace anki