aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-12-24 21:02:12 +0800
committerchai <chaifix@163.com>2018-12-24 21:02:12 +0800
commit8f2ba3f1b11f30cdb7d41bf2e5c5dc141fba76d4 (patch)
treef36138310b5ca7a8e58b3af9547335a11d5d79c8
parent039e2541207232e0a382a52a65122a15eed9257d (diff)
*屏幕特效(post processing)
-rw-r--r--bin/SDL2.dllbin771072 -> 771072 bytes
-rw-r--r--bin/cembed.exebin11264 -> 11264 bytes
-rw-r--r--bin/game/main.lua64
-rw-r--r--bin/jin.exebin606720 -> 607232 bytes
-rw-r--r--bin/lua51.dllbin364544 -> 364544 bytes
-rw-r--r--src/libjin-lua/scripts/app.lua4
-rw-r--r--src/libjin-lua/scripts/app.lua.h40
-rw-r--r--src/libjin/graphics/je_canvas.cpp4
-rw-r--r--src/libjin/graphics/je_canvas.h2
-rw-r--r--src/libjin/graphics/je_gl.cpp10
-rw-r--r--src/libjin/graphics/je_gl.h4
-rw-r--r--src/libjin/graphics/je_graphic.cpp16
-rw-r--r--src/libjin/graphics/je_mesh.cpp10
-rw-r--r--src/libjin/graphics/je_shapes.cpp30
-rw-r--r--src/libjin/graphics/je_window.cpp2
-rw-r--r--src/libjin/graphics/shaders/je_jsl_compiler.cpp4
-rw-r--r--src/libjin/graphics/shaders/je_jsl_compiler.h1
-rw-r--r--src/libjin/graphics/shaders/je_shader.cpp10
18 files changed, 144 insertions, 57 deletions
diff --git a/bin/SDL2.dll b/bin/SDL2.dll
index 15fa57c..b73575b 100644
--- a/bin/SDL2.dll
+++ b/bin/SDL2.dll
Binary files differ
diff --git a/bin/cembed.exe b/bin/cembed.exe
index e30b730..0a0bb5a 100644
--- a/bin/cembed.exe
+++ b/bin/cembed.exe
Binary files differ
diff --git a/bin/game/main.lua b/bin/game/main.lua
index ce5b62c..3ce17a0 100644
--- a/bin/game/main.lua
+++ b/bin/game/main.lua
@@ -20,7 +20,11 @@ end
local particle_sprites = {}
local Pi = 3.1415
local sinShader = nil
+local screen = nil
+local pp = nil
+local pixel = nil
function jin.core.onLoad()
+ screen = jin.graphics.newCanvas(jin.graphics.getSize())
-- bitmap = jin.graphics.newBitmap(200, 200, function(w, h, x, y)
-- return {255*math.sin(x/w),255 - 255,255*math.cos(y/w),255}
-- end)
@@ -103,6 +107,54 @@ function jin.core.onLoad()
}
#END_FRAGMENT_SHADER
]]
+
+ pp = jin.graphics.newShader[[
+ #VERTEX_SHADER
+ Vertex vert(Vertex v)
+ {
+ return v;
+ }
+ #END_VERTEX_SHADER
+ #FRAGMENT_SHADER
+ Color frag(Color col, Texture tex, Vertex v)
+ {
+ v.uv.x += sin(v.uv.y * 4 * 2 * 3.14 + jin_Time.x) / (10 + sin(jin_Time.x) * 10);
+ return texel(tex, v.uv);
+ }
+ #END_FRAGMENT_SHADER
+ ]]
+
+ pixel = jin.graphics.newShader[[
+ #VERTEX_SHADER
+ Vertex vert(Vertex v)
+ {
+ return v;
+ }
+ #END_VERTEX_SHADER
+ #FRAGMENT_SHADER
+ Color frag(Color col, Texture tex, Vertex v)
+ {
+ // config
+ float pixel_w = 10.0;
+ float pixel_h = 10.0;
+
+ vec2 uv = v.uv;
+ vec3 tc = vec3(1.0, 0.0, 0.0);
+ if(uv.x < abs(sin(jin_Time.x)))
+ {
+ float dx = pixel_w*(1.0/jin_RenderTargetSize.x);
+ float dy = pixel_h*(1.0/jin_RenderTargetSize.y);
+ vec2 coord = vec2(dx*floor(uv.x/dx),dy*floor(uv.y/dy));
+ tc = texel(tex, coord).rgb;
+ }
+ else
+ {
+ tc = texel(tex, uv).rgb;
+ }
+ return vec4(tc, 1.0);
+ }
+ #END_FRAGMENT_SHADER
+ ]]
jin.log.info("test")
@@ -127,6 +179,11 @@ function jin.core.onEvent(e)
if e.type == "Quit" then
jin.core.stop()
end
+ if e.type == "MouseButtonDown" then
+ if e.button == "Left" then
+ ps:setPosition(e.x, e.y)
+ end
+ end
end
local t = 0
@@ -142,6 +199,8 @@ function jin.core.onUpdate(dt)
end
function jin.core.onDraw()
+ jin.graphics.bindCanvas(screen)
+ jin.graphics.clear()
jin.graphics.useShader(jin.graphics.Shaders.Shape)
jin.graphics.setColor(255, 0, 255, 255)
jin.graphics.rect(jin.graphics.RenderMode.FILL, 30, 50, 100, 200)
@@ -166,4 +225,9 @@ function jin.core.onDraw()
jin.graphics.unuseShader()
jin.graphics.setColor(255, 255, 255, 255)
jin.graphics.print(jin.graphics.getStatsStr(), 450, 10)
+
+ jin.graphics.unbindCanvas(screen)
+ jin.graphics.useShader(pixel)
+ jin.graphics.draw(screen, 0, 0)
+ jin.graphics.unuseShader()
end \ No newline at end of file
diff --git a/bin/jin.exe b/bin/jin.exe
index d4c075e..e9e8f37 100644
--- a/bin/jin.exe
+++ b/bin/jin.exe
Binary files differ
diff --git a/bin/lua51.dll b/bin/lua51.dll
index 7b534e6..5ec2ae0 100644
--- a/bin/lua51.dll
+++ b/bin/lua51.dll
Binary files differ
diff --git a/src/libjin-lua/scripts/app.lua b/src/libjin-lua/scripts/app.lua
index d4f2e59..261ae28 100644
--- a/src/libjin-lua/scripts/app.lua
+++ b/src/libjin-lua/scripts/app.lua
@@ -113,7 +113,7 @@ jin.audio.init()
jin.graphics.init(jin.config)
-jin.log.info("Start game...")
+jin.log.info("================== Start game ==================")
-------------------------------------------------------------------------
-- Boot game
@@ -125,7 +125,7 @@ xpcall(boot, onError)
-- Destroy sub-systems
-------------------------------------------------------------------------
-jin.log.info("Quit...")
+jin.log.info("================== Quit game ==================")
jin.graphics.destroy()
diff --git a/src/libjin-lua/scripts/app.lua.h b/src/libjin-lua/scripts/app.lua.h
index 7b981d2..863b49f 100644
--- a/src/libjin-lua/scripts/app.lua.h
+++ b/src/libjin-lua/scripts/app.lua.h
@@ -173,38 +173,42 @@ static char app_lua[] = {
100,105,111,46,105,110,105,116,40,41,13,10,13,10,106,105,110,46,103,114,
97,112,104,105,99,115,46,105,110,105,116,40,106,105,110,46,99,111,110,102,
105,103,41,13,10,13,10,106,105,110,46,108,111,103,46,105,110,102,111,40,
-34,83,116,97,114,116,32,103,97,109,101,46,46,46,34,41,13,10,13,10,
+34,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,32,
+83,116,97,114,116,32,103,97,109,101,32,61,61,61,61,61,61,61,61,61,
+61,61,61,61,61,61,61,61,61,34,41,13,10,13,10,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
-45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,32,66,111,
-111,116,32,103,97,109,101,13,10,45,45,45,45,45,45,45,45,45,45,45,
+45,45,45,45,45,45,45,45,13,10,45,45,32,66,111,111,116,32,103,97,
+109,101,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
+45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,
+10,120,112,99,97,108,108,40,98,111,111,116,44,32,111,110,69,114,114,111,
+114,41,13,10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
-45,45,13,10,13,10,120,112,99,97,108,108,40,98,111,111,116,44,32,111,
-110,69,114,114,111,114,41,13,10,13,10,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
+45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,
+10,45,45,32,68,101,115,116,114,111,121,32,115,117,98,45,115,121,115,116,
+101,109,115,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
-45,45,45,45,13,10,45,45,32,68,101,115,116,114,111,121,32,115,117,98,
-45,115,121,115,116,101,109,115,13,10,45,45,45,45,45,45,45,45,45,45,
+45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,
+13,10,106,105,110,46,108,111,103,46,105,110,102,111,40,34,61,61,61,61,
+61,61,61,61,61,61,61,61,61,61,61,61,61,61,32,81,117,105,116,32,
+103,97,109,101,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,
+61,61,61,34,41,13,10,13,10,106,105,110,46,103,114,97,112,104,105,99,
+115,46,100,101,115,116,114,111,121,40,41,13,10,13,10,106,105,110,46,97,
+117,100,105,111,46,100,101,115,116,114,111,121,40,41,13,10,13,10,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
-45,45,45,13,10,13,10,106,105,110,46,108,111,103,46,105,110,102,111,40,
-34,81,117,105,116,46,46,46,34,41,13,10,13,10,106,105,110,46,103,114,
-97,112,104,105,99,115,46,100,101,115,116,114,111,121,40,41,13,10,13,10,
-106,105,110,46,97,117,100,105,111,46,100,101,115,116,114,111,121,40,41,13,
-10,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
+45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,32,81,117,105,116,
+32,103,97,109,101,13,10,45,45,45,45,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
-45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,45,45,
-32,81,117,105,116,32,103,97,109,101,13,10,45,45,45,45,45,45,45,45,
45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
-45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
-45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,
-45,45,45,45,45,13,10,13,10,106,105,110,46,99,111,114,101,46,113,117,
-105,116,40,41,13,10
+13,10,13,10,106,105,110,46,99,111,114,101,46,113,117,105,116,40,41,13,
+10
};
diff --git a/src/libjin/graphics/je_canvas.cpp b/src/libjin/graphics/je_canvas.cpp
index ba7919e..d52bdfd 100644
--- a/src/libjin/graphics/je_canvas.cpp
+++ b/src/libjin/graphics/je_canvas.cpp
@@ -22,10 +22,11 @@ namespace JinEngine
GLint current_fbo;
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &current_fbo);
- // Generate a new render buffer object
+ // Generate a new render buffer object.
fbo = gl.genFrameBuffer();
gl.bindFrameBuffer(fbo);
+ // Render texture.
GLuint texture = getGLTexture();
gl.bindTexture(texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
@@ -33,7 +34,6 @@ namespace JinEngine
gl.texImage(GL_RGBA8, w, h, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
gl.bindTexture(0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
-
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
// Unbind framebuffer
diff --git a/src/libjin/graphics/je_canvas.h b/src/libjin/graphics/je_canvas.h
index b65e598..dc0a59e 100644
--- a/src/libjin/graphics/je_canvas.h
+++ b/src/libjin/graphics/je_canvas.h
@@ -23,7 +23,7 @@ namespace JinEngine
static bool isBinded(const Canvas*);
///
- ///
+ /// Default canvas, aka screen.
///
Canvas(GLuint n);
diff --git a/src/libjin/graphics/je_gl.cpp b/src/libjin/graphics/je_gl.cpp
index 24b0a48..aeaa663 100644
--- a/src/libjin/graphics/je_gl.cpp
+++ b/src/libjin/graphics/je_gl.cpp
@@ -18,7 +18,7 @@ namespace JinEngine
OpenGL gl;
- const Canvas* const OpenGL::DEFAULT_CANVAS = new Canvas(0);
+ Canvas* const OpenGL::DEFAULT_CANVAS = new Canvas(0);
OpenGL::OpenGL()
: mBlendMode(BlendMode::NONE)
@@ -262,6 +262,7 @@ namespace JinEngine
case BlendMode::ADDITIVE:
srcRGB = GL_SRC_ALPHA;
dstRGB = GL_ONE;
+ dstA = GL_ONE;
break;
case BlendMode::PREMULTIPLIEDALPHA:
srcRGB = srcA = GL_ONE;
@@ -316,6 +317,11 @@ namespace JinEngine
mCanvas = canvas;
+ gl.enable(GL_BLEND);
+ gl.enable(GL_TEXTURE_2D);
+
+ gl.setBlendMode(OpenGL::BlendMode::ALPHA);
+
++mStats.canvasSwitches;
}
}
@@ -340,7 +346,7 @@ namespace JinEngine
glViewport(0, 0, w, h);
gl.setProjectionMatrix(0, w, h, 0, -1, 1);
- mCanvas = nullptr;
+ mCanvas = DEFAULT_CANVAS;
}
Canvas* OpenGL::getCanvas()
diff --git a/src/libjin/graphics/je_gl.h b/src/libjin/graphics/je_gl.h
index 21aa900..d6edc2f 100644
--- a/src/libjin/graphics/je_gl.h
+++ b/src/libjin/graphics/je_gl.h
@@ -51,6 +51,8 @@ namespace JinEngine
//int64 textureMemory;
};
+ static Canvas* const DEFAULT_CANVAS;
+
OpenGL();
~OpenGL();
@@ -210,8 +212,6 @@ namespace JinEngine
private:
- static const Canvas* const DEFAULT_CANVAS;
-
///
///
///
diff --git a/src/libjin/graphics/je_graphic.cpp b/src/libjin/graphics/je_graphic.cpp
index 96c3b4a..18dbf42 100644
--- a/src/libjin/graphics/je_graphic.cpp
+++ b/src/libjin/graphics/je_graphic.cpp
@@ -72,10 +72,10 @@ namespace JinEngine
// Set shader.
Shader* shader = gl.getShader();
shader->prepare()
- .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix)
- .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
- .uploadVertices(2, GL_FLOAT, 0, vertexCoords)
- .uploadUV(2, GL_FLOAT, 0, textureCoords);
+ .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix)
+ .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
+ .uploadVertices(2, GL_FLOAT, 0, vertexCoords)
+ .uploadUV(2, GL_FLOAT, 0, textureCoords);
gl.bindTexture(getGLTexture());
gl.drawArrays(GL_QUADS, 0, 4);
@@ -106,10 +106,10 @@ namespace JinEngine
Shader* shader = gl.getShader();
shader->prepare()
- .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix)
- .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
- .uploadVertices(2, GL_FLOAT, 0, vertexCoords)
- .uploadUV(2, GL_FLOAT, 0, textureCoords);
+ .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix)
+ .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
+ .uploadVertices(2, GL_FLOAT, 0, vertexCoords)
+ .uploadUV(2, GL_FLOAT, 0, textureCoords);
gl.bindTexture(getGLTexture());
gl.drawArrays(GL_QUADS, 0, 4);
diff --git a/src/libjin/graphics/je_mesh.cpp b/src/libjin/graphics/je_mesh.cpp
index e8512ac..2d453b0 100644
--- a/src/libjin/graphics/je_mesh.cpp
+++ b/src/libjin/graphics/je_mesh.cpp
@@ -61,11 +61,11 @@ namespace JinEngine
Shader* shader = gl.getShader();
shader->prepare()
- .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix)
- .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
- .uploadVertices(2, GL_FLOAT, sizeof(Vertex), &(mVertices[0].xy))
- .uploadUV(2, GL_FLOAT, sizeof(Vertex), &(mVertices[0].uv))
- .uploadColor(4, GL_UNSIGNED_BYTE, sizeof(Vertex), &(mVertices[0].color), GL_TRUE);
+ .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelViewMatrix)
+ .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
+ .uploadVertices(2, GL_FLOAT, sizeof(Vertex), &(mVertices[0].xy))
+ .uploadUV(2, GL_FLOAT, sizeof(Vertex), &(mVertices[0].uv))
+ .uploadColor(4, GL_UNSIGNED_BYTE, sizeof(Vertex), &(mVertices[0].color), GL_TRUE);
gl.bindTexture(mGraphic->getGLTexture());
gl.drawArrays(GL_POLYGON, 0, mVertices.size());
diff --git a/src/libjin/graphics/je_shapes.cpp b/src/libjin/graphics/je_shapes.cpp
index 8bfb1ef..ce5c7e7 100644
--- a/src/libjin/graphics/je_shapes.cpp
+++ b/src/libjin/graphics/je_shapes.cpp
@@ -26,9 +26,9 @@ namespace JinEngine
Shader* shader = gl.getShader();
shader->prepare()
- .uploadVertices(2, GL_FLOAT, 0, verts)
- .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
- .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
+ .uploadVertices(2, GL_FLOAT, 0, verts)
+ .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
+ .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
gl.drawArrays(GL_POINTS, 0, 1);
}
@@ -39,9 +39,9 @@ namespace JinEngine
Shader* shader = gl.getShader();
shader->prepare()
- .uploadVertices(2, GL_SHORT, 0, p)
- .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
- .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
+ .uploadVertices(2, GL_SHORT, 0, p)
+ .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
+ .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
gl.drawArrays(GL_POINTS, 0, n);
}
@@ -57,9 +57,9 @@ namespace JinEngine
Shader* shader = gl.getShader();
shader->prepare()
- .uploadVertices(2, GL_FLOAT, 0, verts)
- .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
- .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
+ .uploadVertices(2, GL_FLOAT, 0, verts)
+ .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
+ .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix());
gl.drawArrays(GL_LINES, 0, 2);
}
@@ -106,9 +106,9 @@ namespace JinEngine
Shader* shader = gl.getShader();
Matrix modelMatrix = gl.getModelViewMatrix();
shader->prepare()
- .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
- .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
- .uploadVertices(2, GL_FLOAT, 0, p);
+ .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
+ .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
+ .uploadVertices(2, GL_FLOAT, 0, p);
gl.drawArrays(GL_LINE_LOOP, 0, count);
}
@@ -124,9 +124,9 @@ namespace JinEngine
Shader* shader = gl.getShader();
Matrix modelMatrix = gl.getModelViewMatrix();
shader->prepare()
- .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
- .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
- .uploadVertices(2, GL_FLOAT, 0, p);
+ .sendMatrix4(SHADER_MODELVIEW_MATRIX, &modelMatrix)
+ .sendMatrix4(SHADER_PROJECTION_MATRIX, &gl.getProjectionMatrix())
+ .uploadVertices(2, GL_FLOAT, 0, p);
gl.drawArrays(GL_POLYGON, 0, count);
}
diff --git a/src/libjin/graphics/je_window.cpp b/src/libjin/graphics/je_window.cpp
index 1ce3901..49877e3 100644
--- a/src/libjin/graphics/je_window.cpp
+++ b/src/libjin/graphics/je_window.cpp
@@ -88,7 +88,7 @@ namespace JinEngine
SDL_GL_SetSwapInterval(vsync ? 1 : 0);
SDL_GL_MakeCurrent(mWnd, ctx);
// Default configuration.
- gl.setClearColor(0, 0, 0, 0xff);
+ gl.setClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
gl.setColor(0xff, 0xff, 0xff, 0xff);
gl.enable(GL_BLEND);
diff --git a/src/libjin/graphics/shaders/je_jsl_compiler.cpp b/src/libjin/graphics/shaders/je_jsl_compiler.cpp
index 8aacdd0..c5a004e 100644
--- a/src/libjin/graphics/shaders/je_jsl_compiler.cpp
+++ b/src/libjin/graphics/shaders/je_jsl_compiler.cpp
@@ -45,6 +45,7 @@ namespace JinEngine
JinEngine::String SHADER_TEXTURE_COORDS = "jin_TextureCoords";
JinEngine::String SHADER_VERTEX_COLOR = "jin_VertexColor";
JinEngine::String SHADER_TIME = "jin_Time";
+ JinEngine::String SHADER_RENDERTARGET_SIZE = "jin_RenderTargetSize";
JinEngine::String SHADER_VERSION = "#version 130 core \n";
JinEngine::String SHADER_DEFINITIONS =
// Types
@@ -69,7 +70,8 @@ namespace JinEngine
"uniform Texture " + SHADER_MAIN_TEXTURE + "; \n"
"uniform mat4 " + SHADER_PROJECTION_MATRIX + "; \n"
"uniform mat4 " + SHADER_MODELVIEW_MATRIX + "; \n"
- "uniform vec2 " + SHADER_TIME + "; \n";
+ "uniform vec2 " + SHADER_TIME + "; \n"
+ "uniform vec2 " + SHADER_RENDERTARGET_SIZE + "; \n";
JinEngine::String JSLCompiler::formatVertexShader(const JinEngine::String& vert)
{
diff --git a/src/libjin/graphics/shaders/je_jsl_compiler.h b/src/libjin/graphics/shaders/je_jsl_compiler.h
index 75c92cf..c61e152 100644
--- a/src/libjin/graphics/shaders/je_jsl_compiler.h
+++ b/src/libjin/graphics/shaders/je_jsl_compiler.h
@@ -23,6 +23,7 @@ namespace JinEngine
extern JinEngine::String SHADER_TEXTURE_COORDS;
extern JinEngine::String SHADER_VERTEX_COLOR;
extern JinEngine::String SHADER_TIME;
+ extern JinEngine::String SHADER_RENDERTARGET_SIZE;
///
/// Compile JSL into GLSL.
diff --git a/src/libjin/graphics/shaders/je_shader.cpp b/src/libjin/graphics/shaders/je_shader.cpp
index 5668168..4fa3b9e 100644
--- a/src/libjin/graphics/shaders/je_shader.cpp
+++ b/src/libjin/graphics/shaders/je_shader.cpp
@@ -8,6 +8,7 @@
#include "../../utils/je_macros.h"
#include "../je_gl.h"
+#include "../je_window.h"
#include "je_jsl_compiler.h"
#include "je_shader.h"
@@ -78,6 +79,15 @@ namespace JinEngine
// Send uniforms.
sendInt(SHADER_MAIN_TEXTURE, DEFAULT_TEXTURE_UNIT);
sendVec2(SHADER_TIME, Time::getSecond(), Time::getDeltaTime());
+ Canvas* rt = gl.getCanvas();
+ if (rt == OpenGL::DEFAULT_CANVAS)
+ {
+ sendVec2(SHADER_RENDERTARGET_SIZE, Window::get()->getW(), Window::get()->getH());
+ }
+ else if(rt != nullptr)
+ {
+ sendVec2(SHADER_RENDERTARGET_SIZE, rt->getWidth(), rt->getHeight());
+ }
// Reset attribute index.
mAttributeIndex = 0;
return *this;