Shader.lua 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. return retVal
  32. end
  33. function Shader:createBinding()
  34. local retVal = Polycore.Shader_createBinding(self.__ptr)
  35. if retVal == nil then return nil end
  36. if Polycore.__ptr_lookup[retVal] ~= nil then
  37. return Polycore.__ptr_lookup[retVal]
  38. else
  39. Polycore.__ptr_lookup[retVal] = ShaderBinding("__skip_ptr__")
  40. Polycore.__ptr_lookup[retVal].__ptr = retVal
  41. return Polycore.__ptr_lookup[retVal]
  42. end
  43. end
  44. function Shader:__delete()
  45. Polycore.__ptr_lookup[self.__ptr] = nil
  46. Polycore.delete_Shader(self.__ptr)
  47. end