diff options
Diffstat (limited to 'bin/game/main.lua')
-rw-r--r-- | bin/game/main.lua | 133 |
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 + + |