Common.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Copyright (C) 2009-2020, 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. //
  7. // Macros & functions C++
  8. //
  9. #if defined(__cplusplus)
  10. # define ANKI_BEGIN_NAMESPACE \
  11. namespace anki \
  12. {
  13. # define ANKI_END_NAMESPACE }
  14. # define ANKI_SHADER_FUNC_INLINE inline
  15. # define ANKI_SHADER_INOUT(type_) type_&
  16. # define ANKI_SHADER_IN(type_) const type_&
  17. # define ANKI_SHADER_OUT(type_) type_&
  18. # define ANKI_SHADER_STATIC_ASSERT(cond_) static_assert(cond_, "See file");
  19. ANKI_BEGIN_NAMESPACE
  20. template<typename T>
  21. inline F32 dot(const T& a, const T& b)
  22. {
  23. return a.dot(b);
  24. }
  25. ANKI_END_NAMESPACE
  26. //
  27. // Macros & functions GLSL
  28. //
  29. #else
  30. # define x() x
  31. # define y() y
  32. # define z() z
  33. # define w() w
  34. # define xyz() xyz
  35. # define ANKI_BEGIN_NAMESPACE
  36. # define ANKI_END_NAMESPACE
  37. # define ANKI_SHADER_FUNC_INLINE
  38. # define ANKI_SHADER_INOUT(type_) inout type_
  39. # define ANKI_SHADER_IN(type_) in type_
  40. # define ANKI_SHADER_OUT(type_) out type_
  41. # define ANKI_SHADER_STATIC_ASSERT(cond_)
  42. #endif
  43. //
  44. // Consts
  45. //
  46. ANKI_BEGIN_NAMESPACE
  47. const U32 SIZEOF_VEC2 = 2u * 4u;
  48. const U32 SIZEOF_VEC4 = 4u * 4u;
  49. const U32 SIZEOF_MAT4 = 4u * SIZEOF_VEC4;
  50. ANKI_END_NAMESPACE