Shader.lua 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. require "Polycode/Resource"
  2. class "Shader" (Resource)
  3. FIXED_SHADER = 0
  4. MODULE_SHADER = 1
  5. function Shader:__index__(name)
  6. if name == "numSpotLights" then
  7. return Polycore.Shader_get_numSpotLights(self.__ptr)
  8. elseif name == "numAreaLights" then
  9. return Polycore.Shader_get_numAreaLights(self.__ptr)
  10. end
  11. end
  12. function Shader:__set_callback(name,value)
  13. if name == "numSpotLights" then
  14. Polycore.Shader_set_numSpotLights(self.__ptr, value)
  15. return true
  16. elseif name == "numAreaLights" then
  17. Polycore.Shader_set_numAreaLights(self.__ptr, value)
  18. return true
  19. end
  20. return false
  21. end
  22. function Shader:getType()
  23. local retVal = Polycore.Shader_getType(self.__ptr)
  24. return retVal
  25. end
  26. function Shader:setName(name)
  27. local retVal = Polycore.Shader_setName(self.__ptr, name)
  28. end
  29. function Shader:getName()
  30. local retVal = Polycore.Shader_getName(self.__ptr)
  31. if retVal == nil then return nil end
  32. if Polycore.__ptr_lookup[retVal] ~= nil then
  33. return Polycore.__ptr_lookup[retVal]
  34. else
  35. Polycore.__ptr_lookup[retVal] = String("__skip_ptr__")
  36. Polycore.__ptr_lookup[retVal].__ptr = retVal
  37. return Polycore.__ptr_lookup[retVal]
  38. end
  39. end
  40. function Shader:createBinding()
  41. local retVal = Polycore.Shader_createBinding(self.__ptr)
  42. if retVal == nil then return nil end
  43. if Polycore.__ptr_lookup[retVal] ~= nil then
  44. return Polycore.__ptr_lookup[retVal]
  45. else
  46. Polycore.__ptr_lookup[retVal] = ShaderBinding("__skip_ptr__")
  47. Polycore.__ptr_lookup[retVal].__ptr = retVal
  48. return Polycore.__ptr_lookup[retVal]
  49. end
  50. end
  51. function Shader:reload()
  52. local retVal = Polycore.Shader_reload(self.__ptr)
  53. end
  54. function Shader:__delete()
  55. Polycore.__ptr_lookup[self.__ptr] = nil
  56. Polycore.delete_Shader(self.__ptr)
  57. end