aboutsummaryrefslogtreecommitdiff
path: root/bin/game/main.lua
diff options
context:
space:
mode:
Diffstat (limited to 'bin/game/main.lua')
-rw-r--r--bin/game/main.lua133
1 files changed, 126 insertions, 7 deletions
diff --git a/bin/game/main.lua b/bin/game/main.lua
index 3ce17a0..2dc358e 100644
--- a/bin/game/main.lua
+++ b/bin/game/main.lua
@@ -23,7 +23,15 @@ local sinShader = nil
local screen = nil
local pp = nil
local pixel = nil
+local rgbsplit = nil
+local sobel = nil
+local bloom = nil
+local noise = nil
+local radial = nil
+local glow = nil
function jin.core.onLoad()
+ jin.log.info("=============== Start Game ===============")
+
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}
@@ -135,13 +143,14 @@ function jin.core.onLoad()
Color frag(Color col, Texture tex, Vertex v)
{
// config
- float pixel_w = 10.0;
- float pixel_h = 10.0;
+ float pixel_w = 1 + sin(jin_Time.x / 3)*20.0;
+ float pixel_h = 1 + sin(jin_Time.x / 3)*20.0;
vec2 uv = v.uv;
vec3 tc = vec3(1.0, 0.0, 0.0);
- if(uv.x < abs(sin(jin_Time.x)))
- {
+ //if(uv.x < abs(sin(jin_Time.x)))
+ if(uv.x < 1)
+ {
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));
@@ -156,6 +165,110 @@ function jin.core.onLoad()
#END_FRAGMENT_SHADER
]]
+ rgbsplit = jin.graphics.newShader[[
+ #VERTEX_SHADER
+ Vertex vert(Vertex v)
+ {
+ //v.xy += vec2(50 * sin(jin_Time.x * 2), 50 * cos(jin_Time.x * 2));
+ return v;
+ }
+ #END_VERTEX_SHADER
+ #FRAGMENT_SHADER
+ Color frag(Color col, Texture tex, Vertex v)
+ {
+ float a = abs(sin(jin_Time.x)) * 3.14;
+ vec2 p = vec2(0.5*cos(a) + 0.5, 0.5*sin(a) + 0.5);
+ vec2 dir = v.uv - p;
+ float d = .7 * length(dir);
+ normalize(dir);
+ vec2 value = d * dir * 200 * abs(sin(jin_Time.x * 3));
+
+ vec4 c1 = texel(tex, v.uv - value / jin_RenderTargetSize.x);
+ vec4 c2 = texel(tex, v.uv);
+ vec4 c3 = texel(tex, v.uv + value / jin_RenderTargetSize.y);
+
+ return vec4(c1.r, c2.g, c3.b, c1.a + c2.a + c3.b);
+ }
+ #END_FRAGMENT_SHADER
+ ]]
+
+ sobel = jin.graphics.newShader[[
+ #VERTEX_SHADER
+ Vertex vert(Vertex v)
+ {
+ return v;
+ }
+ #END_VERTEX_SHADER
+ #FRAGMENT_SHADER
+ Color frag(Color col, Texture texture, Vertex v)
+ {
+ float x = 1.0 / jin_RenderTargetSize.x;
+ float y = 1.0 / jin_RenderTargetSize.y;
+ vec4 horizEdge = vec4( 0.0 );
+ horizEdge -= texture2D( texture, vec2( v.uv.x - x, v.uv.y - y ) ) * 1.0;
+ horizEdge -= texture2D( texture, vec2( v.uv.x - x, v.uv.y ) ) * 2.0;
+ horizEdge -= texture2D( texture, vec2( v.uv.x - x, v.uv.y + y ) ) * 1.0;
+ horizEdge += texture2D( texture, vec2( v.uv.x + x, v.uv.y - y ) ) * 1.0;
+ horizEdge += texture2D( texture, vec2( v.uv.x + x, v.uv.y ) ) * 2.0;
+ horizEdge += texture2D( texture, vec2( v.uv.x + x, v.uv.y + y ) ) * 1.0;
+ vec4 vertEdge = vec4( 0.0 );
+ vertEdge -= texture2D( texture, vec2( v.uv.x - x, v.uv.y - y ) ) * 1.0;
+ vertEdge -= texture2D( texture, vec2( v.uv.x , v.uv.y - y ) ) * 2.0;
+ vertEdge -= texture2D( texture, vec2( v.uv.x + x, v.uv.y - y ) ) * 1.0;
+ vertEdge += texture2D( texture, vec2( v.uv.x - x, v.uv.y + y ) ) * 1.0;
+ vertEdge += texture2D( texture, vec2( v.uv.x , v.uv.y + y ) ) * 2.0;
+ vertEdge += texture2D( texture, vec2( v.uv.x + x, v.uv.y + y ) ) * 1.0;
+ vec3 edge = sqrt((horizEdge.rgb * horizEdge.rgb) + (vertEdge.rgb * vertEdge.rgb));
+
+ return vec4(edge, texture2D(texture, v.uv.xy).a);
+ }
+ #END_FRAGMENT_SHADER
+ ]]
+
+ noise = jin.graphics.newShader[[
+ #VERTEX_SHADER
+ Vertex vert(Vertex v)
+ {
+ return v;
+ }
+ #END_VERTEX_SHADER
+ #FRAGMENT_SHADER
+
+ float random(vec2 n, float offset ){
+ return .5 - fract(sin(dot(n.xy + vec2(offset, 0.), vec2(12.9898, 78.233)))* 43758.5453);
+ }
+
+ Color frag(Color col, Texture texture, Vertex v)
+ {
+ float amount = 0.1;
+ float speed = 0.5;
+ vec4 color = texture2D(texture, v.uv.xy);
+ color += vec4(vec3(amount * random(v.uv.xy, .00001 * speed * jin_Time.x)), 1.);
+ return color;
+ }
+ #END_FRAGMENT_SHADER
+ ]]
+
+ radial = jin.graphics.newShader[[
+ #VERTEX_SHADER
+ Vertex vert(Vertex v)
+ {
+ return v;
+ }
+ #END_VERTEX_SHADER
+ #FRAGMENT_SHADER
+ Color frag(Color col, Texture texture, Vertex v)
+ {
+ float of = abs(sin(jin_Time.x / 5));
+ vec3 p = vec3(v.xy/jin_RenderTargetSize, 0) - of;
+ vec3 o = texture2D(texture,of+(p.xy*=.992)).rbb;
+ for (float i=0.;i<100.;i++)
+ p.z += pow(max(0.,of-length(texture2D(texture,of+(p.xy*=.992)).rg)),2.)*exp(-i*.08);
+ return vec4(o*o+p.z,1);
+ }
+ #END_FRAGMENT_SHADER
+ ]]
+
jin.log.info("test")
timer:every(1, function()
@@ -225,9 +338,15 @@ 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.useShader(rgbsplit)
jin.graphics.draw(screen, 0, 0)
jin.graphics.unuseShader()
-end \ No newline at end of file
+end
+
+function jin.core.onQuit()
+ jin.log.info("=============== Quit Game ===============")
+end
+
+