MaterialTypes.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright (C) 2009-present, 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/Shaders/Include/Common.h>
  7. ANKI_BEGIN_NAMESPACE
  8. /// Common data for all materials.
  9. struct MaterialGlobalUniforms
  10. {
  11. Mat4 m_viewProjectionMatrix;
  12. Mat4 m_previousViewProjectionMatrix;
  13. Mat3x4 m_viewTransform;
  14. Mat3x4 m_cameraTransform;
  15. Vec4 m_viewport;
  16. U32 m_enableHzbTesting;
  17. U32 m_padding0;
  18. U32 m_padding1;
  19. U32 m_padding2;
  20. };
  21. static_assert(sizeof(MaterialGlobalUniforms) == 16 * sizeof(Vec4));
  22. #define ANKI_MATERIAL_REGISTER_TILINEAR_REPEAT_SAMPLER s0
  23. #define ANKI_MATERIAL_REGISTER_GLOBAL_UNIFORMS b0
  24. #define ANKI_MATERIAL_REGISTER_GPU_SCENE t0
  25. #define ANKI_MATERIAL_REGISTER_MESHLET_BOUNDING_VOLUMES t1 ///< Points to the unified geom buffer
  26. #define ANKI_MATERIAL_REGISTER_MESHLET_GEOMETRY_DESCRIPTORS t2 ///< Points to the unified geom buffer
  27. #define ANKI_MATERIAL_REGISTER_MESHLET_GROUPS t3
  28. #define ANKI_MATERIAL_REGISTER_RENDERABLES t4
  29. #define ANKI_MATERIAL_REGISTER_MESH_LODS t5
  30. #define ANKI_MATERIAL_REGISTER_PARTICLE_EMITTERS t6
  31. #define ANKI_MATERIAL_REGISTER_TRANSFORMS t7
  32. #define ANKI_MATERIAL_REGISTER_HZB_TEXTURE t8
  33. #define ANKI_MATERIAL_REGISTER_NEAREST_CLAMP_SAMPLER s1
  34. // For FW shading:
  35. #define ANKI_MATERIAL_REGISTER_LINEAR_CLAMP_SAMPLER s2
  36. #define ANKI_MATERIAL_REGISTER_SHADOW_SAMPLER s3
  37. #define ANKI_MATERIAL_REGISTER_SCENE_DEPTH t9
  38. #define ANKI_MATERIAL_REGISTER_LIGHT_VOLUME t10
  39. #define ANKI_MATERIAL_REGISTER_CLUSTER_SHADING_UNIFORMS b1
  40. #define ANKI_MATERIAL_REGISTER_CLUSTER_SHADING_POINT_LIGHTS t11
  41. #define ANKI_MATERIAL_REGISTER_CLUSTER_SHADING_SPOT_LIGHTS t12
  42. #define ANKI_MATERIAL_REGISTER_SHADOW_ATLAS t13
  43. #define ANKI_MATERIAL_REGISTER_CLUSTERS t14
  44. // Always last because it's variable. Texture buffer bindings pointing to unified geom buffer:
  45. #define ANKI_MATERIAL_REGISTER_UNIFIED_GEOMETRY_START t15
  46. ANKI_END_NAMESPACE