diff options
Diffstat (limited to 'src/libjin-lua/scripts/graphics/graphics.lua')
-rw-r--r-- | src/libjin-lua/scripts/graphics/graphics.lua | 185 |
1 files changed, 77 insertions, 108 deletions
diff --git a/src/libjin-lua/scripts/graphics/graphics.lua b/src/libjin-lua/scripts/graphics/graphics.lua index 9307083..beb5712 100644 --- a/src/libjin-lua/scripts/graphics/graphics.lua +++ b/src/libjin-lua/scripts/graphics/graphics.lua @@ -39,119 +39,88 @@ local function compileBuiltInShaders() if jg.Shaders ~= nil then return end - jg.Shaders = {} - jg.Shaders.Font = jg.newShader[[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return Color(col.rgb, texel(tex, v.uv).a); - } - #END_FRAGMENT_SHADER - ]] - jg.Shaders.Texture = jg.newShader[[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return col * texel(tex, v.uv); - } - #END_FRAGMENT_SHADER - ]] - jg.Shaders.Sprite = jg.newShader[[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return col * texel(tex, v.uv); - } - #END_FRAGMENT_SHADER - ]] - jg.Shaders.SpriteBatch = jg.newShader[[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return col * texel(tex, v.uv); - } - #END_FRAGMENT_SHADER - ]] - jg.Shaders.Shape = jg.newShader[[ + local default_vert_shader = [[ #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return col; - } - #END_FRAGMENT_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + ]] + local make_shader = function(frag_shader) + return jg.newShader(default_vert_shader .. frag_shader) + end + jg.Shaders = {} + jg.Shaders.Font = make_shader[[ + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return Color(col.rgb, texel(tex, v.uv).a); + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.Texture = make_shader[[ + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.Sprite = make_shader[[ + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.SpriteBatch = make_shader[[ + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.Shape = make_shader[[ + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col; + } + #END_FRAGMENT_SHADER ]] jg.Shaders.Mesh = jg.newShader[[ - #VERTEX_SHADER + #VERTEX_SHADER in Vec4 color; - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return col * texel(tex, v.uv) * v.color; - } - #END_FRAGMENT_SHADER + Vertex vert(Vertex v) + { + return v; + } + #END_VERTEX_SHADER + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv) * v.color; + } + #END_FRAGMENT_SHADER + ]] + jg.Shaders.Default = make_shader[[ + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return col * texel(tex, v.uv); + } + #END_FRAGMENT_SHADER ]] - jg.Shaders.Default = jg.newShader[[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return col * texel(tex, v.uv); - } - #END_FRAGMENT_SHADER - ]] - jg.Shaders.Error = jg.newShader[[ - #VERTEX_SHADER - Vertex vert(Vertex v) - { - return v; - } - #END_VERTEX_SHADER - #FRAGMENT_SHADER - Color frag(Color col, Texture tex, Vertex v) - { - return Color(1, 0, 1, 1); - } - #END_FRAGMENT_SHADER + jg.Shaders.Error = make_shader[[ + #FRAGMENT_SHADER + Color frag(Color col, Texture tex, Vertex v) + { + return Color(1, 0, 1, 1); + } + #END_FRAGMENT_SHADER ]] end |