aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/shaders
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 /src/libjin/graphics/shaders
parent039e2541207232e0a382a52a65122a15eed9257d (diff)
*屏幕特效(post processing)
Diffstat (limited to 'src/libjin/graphics/shaders')
-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
3 files changed, 14 insertions, 1 deletions
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;