Technique.pkg 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. $#include "Graphics/Technique.h"
  2. enum PassLightingMode
  3. {
  4. LIGHTING_UNLIT,
  5. LIGHTING_PERVERTEX,
  6. LIGHTING_PERPIXEL
  7. };
  8. class Pass : public RefCounted
  9. {
  10. void SetBlendMode(BlendMode mode);
  11. void SetCullMode(CullMode mode);
  12. void SetDepthTestMode(CompareMode mode);
  13. void SetLightingMode(PassLightingMode mode);
  14. void SetDepthWrite(bool enable);
  15. void SetAlphaMask(bool enable);
  16. void SetIsDesktop(bool enable);
  17. void SetVertexShader(const String name);
  18. void SetPixelShader(const String name);
  19. void SetVertexShaderDefines(const String defines);
  20. void SetPixelShaderDefines(const String defines);
  21. void ReleaseShaders();
  22. const String GetName() const;
  23. unsigned GetIndex() const;
  24. CullMode GetCullMode() const;
  25. BlendMode GetBlendMode() const;
  26. CompareMode GetDepthTestMode() const;
  27. PassLightingMode GetLightingMode() const;
  28. bool GetDepthWrite() const;
  29. bool GetAlphaMask() const;
  30. bool IsDesktop() const;
  31. const String GetVertexShader() const;
  32. const String GetPixelShader() const;
  33. const String GetVertexShaderDefines() const;
  34. const String GetPixelShaderDefines() const;
  35. tolua_readonly tolua_property__get_set String name;
  36. tolua_readonly tolua_property__get_set unsigned index;
  37. tolua_property__get_set BlendMode blendMode;
  38. tolua_property__get_set CullMode cullMode;
  39. tolua_property__get_set CompareMode depthTestMode;
  40. tolua_property__get_set PassLightingMode lightingMode;
  41. tolua_property__get_set bool depthWrite;
  42. tolua_property__get_set bool alphaMask;
  43. tolua_readonly tolua_property__is_set bool desktop;
  44. tolua_property__get_set String vertexShader;
  45. tolua_property__get_set String pixelShader;
  46. tolua_property__get_set String vertexShaderDefines;
  47. tolua_property__get_set String pixelShaderDefines;
  48. };
  49. class Technique : public Resource
  50. {
  51. void SetIsDesktop(bool enable);
  52. Pass* CreatePass(const String passName);
  53. void RemovePass(const String passName);
  54. void ReleaseShaders();
  55. tolua_outside Technique* TechniqueClone @ Clone(const String cloneName = String::EMPTY) const;
  56. bool HasPass(const String type) const;
  57. Pass* GetPass(const String type) const;
  58. Pass* GetSupportedPass(const String type) const;
  59. bool IsSupported() const;
  60. bool IsDesktop() const;
  61. unsigned GetNumPasses() const;
  62. tolua_outside const Vector<String>& TechniqueGetPassNames @ GetPassTypes() const;
  63. tolua_outside const PODVector<Pass*>& TechniqueGetPasses @ GetPasses() const;
  64. tolua_readonly tolua_property__is_set bool supported;
  65. tolua_readonly tolua_property__is_set bool desktop;
  66. tolua_readonly tolua_property__get_set unsigned numPasses;
  67. };
  68. ${
  69. static const Vector<String>& TechniqueGetPassNames(const Technique* technique)
  70. {
  71. static Vector<String> vector = technique->GetPassNames();
  72. return vector;
  73. }
  74. static const PODVector<Pass*>& TechniqueGetPasses(const Technique* technique)
  75. {
  76. static PODVector<Pass*> vector = technique->GetPasses();
  77. return vector;
  78. }
  79. static Technique* TechniqueClone(const Technique* technique, const String& cloneName = String::EMPTY)
  80. {
  81. if (!technique)
  82. return 0;
  83. SharedPtr<Technique> clonedTechniquePtr = technique->Clone(cloneName);
  84. Technique* clonedTechnique = clonedTechniquePtr.Get();
  85. clonedTechniquePtr.Detach();
  86. return clonedTechnique;
  87. }
  88. $}