diff options
Diffstat (limited to 'demo/Shader.lua')
-rw-r--r-- | demo/Shader.lua | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/demo/Shader.lua b/demo/Shader.lua new file mode 100644 index 0000000..494bd53 --- /dev/null +++ b/demo/Shader.lua @@ -0,0 +1,53 @@ +local Shader = {} + +Shader.prototype = {} + +Shader.prototype.setInteger = function(self, uniform, integer) + honey.shader.set_int(self.program, uniform, integer) +end + +Shader.prototype.setFloat = function(self, uniform, float) + honey.shader.set_float(self.program, uniform, float) +end + +Shader.prototype.setVec3 = function(self, uniform, vector) + honey.shader.set_vec3(self.program, uniform, vector.array) +end + +Shader.prototype.setVec4 = function(self, uniform, vector) + honey.shader.set_vec4(self.program, uniform, vector.array) +end + +Shader.prototype.setMat3 = function(self, uniform, matrix) + honey.shader.set_mat3(self.program, uniform, matrix.array) +end + +Shader.prototype.setMat4 = function(self, uniform, matrix) + honey.shader.set_mat4(self.program, uniform, matrix.array) +end + +Shader.prototype.drawMesh = function(self, mesh) + honey.mesh.draw(mesh.mesh, self.program) +end + +Shader.prototype.delete = function(self) + honey.shader.delete(self.program) +end + +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Shader.mt = {} +Shader.mt.__index = Shader.prototype + +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Shader.new = function(vertexCode, fragmentCode) + local shader = {} + shader.program = honey.shader.new(vertexCode, fragmentCode) + + setmetatable(shader, Shader.mt) + + return shader +end + +return Shader |