Shader.lua 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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.__ptr)
  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:__delete()
  52. Polycore.__ptr_lookup[self.__ptr] = nil
  53. Polycore.delete_Shader(self.__ptr)
  54. end