From 3cec2301f852a49c7331c92be1780740d4f402d9 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Wed, 2 Jun 2010 19:13:50 +0000 Subject: [PATCH] fucking sahders git-svn-id: http://svn.net-core.org/repos/t-engine4@743 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/engine/Shader.lua | 20 ++++++++++--------- .../modules/tome/data/general/grids/basic.lua | 2 +- game/modules/tome/data/gfx/shaders/water.frag | 6 ++++++ game/modules/tome/data/gfx/shaders/water.lua | 6 ++++++ src/shaders.c | 10 +++++----- 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/game/engine/Shader.lua b/game/engine/Shader.lua index 86b37fd047..1c3899949d 100644 --- a/game/engine/Shader.lua +++ b/game/engine/Shader.lua @@ -93,17 +93,19 @@ function _M:loaded() setfenv(f, setmetatable(self.args or {}, {__index=_G})) local def = f() _M.progs[self.name] = self:createProgram(def) - end - - self.shad = _M.progs[self.name] - for k, v in pairs(self.args) do - if type(v) == "number" then - self.shad:paramNumber(k, v) - elseif type(v) == "table" - if v.texture then - self.shad:paramNumber(k, v.texture, v.is3d) + for k, v in pairs(def.args) do + if type(v) == "number" then + print("[SHADER] setting param", k, v) + _M.progs[self.name]:paramNumber(k, v) + elseif type(v) == "table" then + if v.texture then + print("[SHADER] setting texture param", k, v.texture) + _M.progs[self.name]:paramTexture(k, v.texture, v.is3d) + end end end end + + self.shad = _M.progs[self.name] end diff --git a/game/modules/tome/data/general/grids/basic.lua b/game/modules/tome/data/general/grids/basic.lua index d5d16d3108..ea12f0cc20 100644 --- a/game/modules/tome/data/general/grids/basic.lua +++ b/game/modules/tome/data/general/grids/basic.lua @@ -62,7 +62,7 @@ newEntity{ newEntity{ define_as = "WALL", --- shader = "water", shader_args = {}, + shader = "water", shader_args = {}, name = "wall", image = "terrain/granite_wall1.png", display = '#', color_r=255, color_g=255, color_b=255, back_color=colors.GREY, always_remember = true, diff --git a/game/modules/tome/data/gfx/shaders/water.frag b/game/modules/tome/data/gfx/shaders/water.frag index 5d0d7db109..cd6f9dd27f 100644 --- a/game/modules/tome/data/gfx/shaders/water.frag +++ b/game/modules/tome/data/gfx/shaders/water.frag @@ -1,6 +1,7 @@ uniform int tick; uniform sampler3D noisevol; uniform sampler2D noise2d; +uniform float red; void main(void) { @@ -17,4 +18,9 @@ void main(void) vec4 n = texture2D(noise2d, gl_TexCoord[0].xy); n.x = 1; gl_FragColor = n; + +// int i = (tick / 30) % 255; +// float t = (float)i; +// t = t / 255; +// gl_FragColor = vec4(red, 0, t, 1); } diff --git a/game/modules/tome/data/gfx/shaders/water.lua b/game/modules/tome/data/gfx/shaders/water.lua index c2735c36c5..58b7ce3507 100644 --- a/game/modules/tome/data/gfx/shaders/water.lua +++ b/game/modules/tome/data/gfx/shaders/water.lua @@ -17,7 +17,13 @@ -- Nicolas Casalini "DarkGod" -- darkgod@te4.org +local noise = core.noise.new(2) +local tex = noise:makeTexture2D("simplex", 128, 128, 4, 0, 0) + return { frag = "water", + args = { + noise2d = { texture = tex }, + }, clone = false, } diff --git a/src/shaders.c b/src/shaders.c index 60c3f70402..92e15ad7a5 100644 --- a/src/shaders.c +++ b/src/shaders.c @@ -159,8 +159,8 @@ static int program_set_uniform_number(lua_State *L) const char *var = luaL_checkstring(L, 2); GLfloat i = luaL_checknumber(L, 3); - CHECKGL(glUseProgramObjectARB(p)); - CHECKGL(glUniform1fvARB(glGetUniformLocationARB(p, var), 1, &i)); + CHECKGL(glUseProgramObjectARB(*p)); + CHECKGL(glUniform1fvARB(glGetUniformLocationARB(*p, var), 1, &i)); CHECKGL(glUseProgramObjectARB(0)); return 0; } @@ -173,12 +173,12 @@ static int program_set_uniform_texture(lua_State *L) bool is3d = lua_toboolean(L, 4); GLint i = 1; - CHECKGL(glUseProgramObjectARB(p)); + CHECKGL(glUseProgramObjectARB(*p)); CHECKGL(glActiveTexture(GL_TEXTURE1)); CHECKGL(glBindTexture(is3d ? GL_TEXTURE_3D : GL_TEXTURE_2D, *t)); - CHECKGL(glUniform1ivARB(glGetUniformLocationARB(p, var), 1, &i)); - CHECKGL(glActiveTexture(GL_TEXTURE0)); + CHECKGL(glUniform1ivARB(glGetUniformLocationARB(*p, var), 1, &i)); CHECKGL(glUseProgramObjectARB(0)); +// CHECKGL(glActiveTexture(GL_TEXTURE0)); return 0; } -- GitLab