MaterialUserVariable.cpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include "anki/resource/MaterialUserVariable.h"
  2. #include "anki/resource/Texture.h"
  3. namespace anki {
  4. //==============================================================================
  5. // Constructors & destructor =
  6. //==============================================================================
  7. MaterialUserVariable::MaterialUserVariable(
  8. const char* shaderProgVarName,
  9. const ShaderPrograms& shaderProgsArr,
  10. float val)
  11. : MaterialVariable(T_USER, shaderProgVarName, shaderProgsArr)
  12. {
  13. ANKI_ASSERT(getGlDataType() == GL_FLOAT);
  14. ANKI_ASSERT(getShaderProgramVariableType() ==
  15. ShaderProgramVariable::T_UNIFORM);
  16. data = val;
  17. }
  18. MaterialUserVariable::MaterialUserVariable(
  19. const char* shaderProgVarName,
  20. const ShaderPrograms& shaderProgsArr,
  21. const Vec2& val)
  22. : MaterialVariable(T_USER, shaderProgVarName, shaderProgsArr)
  23. {
  24. ANKI_ASSERT(getGlDataType() == GL_FLOAT_VEC2);
  25. ANKI_ASSERT(getShaderProgramVariableType() ==
  26. ShaderProgramVariable::T_UNIFORM);
  27. data = val;
  28. }
  29. MaterialUserVariable::MaterialUserVariable(
  30. const char* shaderProgVarName,
  31. const ShaderPrograms& shaderProgsArr,
  32. const Vec3& val)
  33. : MaterialVariable(T_USER, shaderProgVarName, shaderProgsArr)
  34. {
  35. ANKI_ASSERT(getGlDataType() == GL_FLOAT_VEC3);
  36. ANKI_ASSERT(getShaderProgramVariableType() ==
  37. ShaderProgramVariable::T_UNIFORM);
  38. data = val;
  39. }
  40. MaterialUserVariable::MaterialUserVariable(
  41. const char* shaderProgVarName,
  42. const ShaderPrograms& shaderProgsArr,
  43. const Vec4& val)
  44. : MaterialVariable(T_USER, shaderProgVarName, shaderProgsArr)
  45. {
  46. ANKI_ASSERT(getGlDataType() == GL_FLOAT_VEC4);
  47. ANKI_ASSERT(getShaderProgramVariableType() ==
  48. ShaderProgramVariable::T_UNIFORM);
  49. data = val;
  50. }
  51. MaterialUserVariable::MaterialUserVariable(
  52. const char* shaderProgVarName,
  53. const ShaderPrograms& shaderProgsArr,
  54. const char* texFilename)
  55. : MaterialVariable(T_USER, shaderProgVarName, shaderProgsArr)
  56. {
  57. ANKI_ASSERT(getGlDataType() == GL_SAMPLER_2D);
  58. ANKI_ASSERT(getShaderProgramVariableType() ==
  59. ShaderProgramVariable::T_UNIFORM);
  60. data = TextureResourcePointer();
  61. boost::get<TextureResourcePointer >(data).load(texFilename);
  62. }
  63. MaterialUserVariable::~MaterialUserVariable()
  64. {}
  65. } // end namespace