aboutsummaryrefslogtreecommitdiff
path: root/bin/main.lua
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-08-07 11:51:37 +0800
committerchai <chaifix@163.com>2018-08-07 11:51:37 +0800
commita46931ada5343e8f5b863719c733f5bfc91c663f (patch)
tree243e77ea0ca1aa5a4b7a235be62efde22914b96e /bin/main.lua
parente4eeedbd6faaef380b58236745856b50cebf4461 (diff)
*update
Diffstat (limited to 'bin/main.lua')
-rw-r--r--bin/main.lua207
1 files changed, 51 insertions, 156 deletions
diff --git a/bin/main.lua b/bin/main.lua
index c0b0ce3..4ef3d14 100644
--- a/bin/main.lua
+++ b/bin/main.lua
@@ -1,162 +1,57 @@
-local shader = [[
-extern Image diffuse;
-extern vec2 mouse;
-extern number i ;
-
-vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 pixel_coords)
-{
- vec3 light_vec = vec3(mouse,1);
- vec3 light_direction = light_vec - vec3(pixel_coords, 0);
- float distance = length(light_direction);
- light_direction = normalize(light_direction);
-
- vec3 normal = Texel(texture, texture_coords).xyz;
- normal.y = 1 - normal.y;
- normal = normalize(mix(vec3(-1), vec3(1), normal));
-
- //float attenuation = 1/(7e-5*pow(distance, 2));
- float attenuation = 5000/pow(distance, 2);
- //float attenuation = 1;
-
- float diffuse_term = clamp(attenuation * dot(normal, light_direction), 0.0, 1.0);
-
- vec3 dark_color = vec3(0.0, 0.0, 1);
- //vec3 light_color = vec3(0.6, 0.6, 0.0);
- vec3 light_color = vec3(0.8, 0.8, 0.0);
- vec3 ambient = mix(dark_color, light_color, diffuse_term) * 0.20;
-
- // the shaded cel has a light value of 0.5, the light cel has a light value of 1
- float cel_diffuse_term = smoothstep(0.49, 0.52, diffuse_term)/2 + 0.5;
- //float cel_diffuse_term = step(0.5, diffuse_term)/2 + 0.5;
-
- return vec4((cel_diffuse_term * Texel(diffuse, texture_coords).rgb) + ambient, Texel(texture, texture_coords).a);
- //return vec4(ambient+Texel(diffuse, texture_coords).rgb/100, Texel(texture, texture_coords).a);
-
-}
-]]
-
-local shader2 = [[
-extern Image diffuse;
-vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 pixel_coords)
-{
- return Texel(diffuse, texture_coords);
-}
-]]
-
-local lighningShader = [[
-extern vec2 iResolution; // 分辨率, pixels
-extern number iTime; // 秒数, seconds
-// Lightning shader
-// rand,noise,fmb functions from https://www.shadertoy.com/view/Xsl3zN
-// jerome
-
-float rand(vec2 n) {
- return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453);
-}
-
-float noise(vec2 n) {
- const vec2 d = vec2(0.0, 1.0);
- vec2 b = floor(n), f = smoothstep(vec2(0.0), vec2(1.0), fract(n));
- return mix(mix(rand(b), rand(b + d.yx), f.x), mix(rand(b + d.xy), rand(b + d.yy), f.x), f.y);
-}
-
-float fbm(vec2 n) {
- float total = 0.0, amplitude = 1.0;
- for (int i = 0; i < 7; i++) {
- total += noise(n) * amplitude;
- n += n;
- amplitude *= 0.5;
- }
- return total;
-}
+local loghelper = require("loghelper")
+loghelper.strict(loghelper.LEVEL.INFO)
+local EventMsgCenter = require("EventMsgCenter.EventMsgCenter")
+local Events = require("EventMsgCenter.Events")
+local timer = require("timer.timer")
+_G["frame"] = 0
+
+local thread = nil
+
+jin.core.onLoad = function()
+ thread = jin.thread.Thread("Test", [[
+ local t = jin.thread.getThread()
+ local str = t:demand(2)
+ print(str)
+ t:send(3, "back data")
+ while true do
+ jin.time.sleep(1)
+ end
+ ]])
+ thread:start()
+ EventMsgCenter.registerMsg(Events.Player_Move, function(msg)
+ print(msg)
+ end)
+ timer.every(1.0, function()
+ loghelper.log(loghelper.LEVEL.INFO, _G["frame"] .. "fps")
+ EventMsgCenter.sendMsg(Events.Player_Move, _G["frame"])
+ _G["frame"] = 0
+ if thread:receive(3) then
+ print(thread:fetch(3))
+ end
+ end)
+ timer.after(4.0, function()
+ thread:send(2, "test thread data")
+ EventMsgCenter.unregisterAllMsgByEvent(Events.Player_Move)
+ end)
+end
-vec4 effect(vec4 outcolor, Image img, vec2 texture_coords, vec2 pixel_coords)
-//void mainImage( out vec4 fragColor, in vec2 fragCoord )
-{
- vec4 col = vec4(0,0,0,1);
- vec2 uv = pixel_coords.xy * 1.0 / iResolution.xy;
-
-
- // draw a line, left side is fixed
- vec2 t = uv * vec2(2.0,1.0) - iTime*3.0;
- vec2 t2 = (vec2(1,-1) + uv) * vec2(2.0,1.0) - iTime*3.0; // a second strand
-
- // draw the lines,
-// this make the left side fixed, can be useful
-// float ycenter = mix( 0.5, 0.25 + 0.25*fbm( t ), uv.x*4.0);
-// float ycenter2 = mix( 0.5, 0.25 + 0.25*fbm( t2 ), uv.x*4.0);
- float ycenter = fbm(t)*0.5;
- float ycenter2= fbm(t2)*0.5;
+jin.core.onEvent = function(e)
+ if e.type == "quit" then
+ jin.core.stop()
+ elseif e.type == "keydown" then
+ if e.key == "Escape" then
+ jin.core.stop()
+ end
+ end
+end
- // falloff
- float diff = abs(uv.y - ycenter);
- float c1 = 1.0 - mix(0.0,1.0,diff*20.0);
-
- float diff2 = abs(uv.y - ycenter2);
- float c2 = 1.0 - mix(0.0,1.0,diff2*20.0);
-
- float c = max(c1,c2);
- col = vec4(c*0.6,0.2*c2,c,1.0); // purple color
- //fragColor = col;
- return col;
-}
-]]
+jin.core.onUpdate = function(dt)
+ _G["frame"] = _G["frame"] + 1
+ timer.update(dt)
-local jg = jin.graphics
-local effect = jg.Shader(shader)
-local effect2 = jg.Shader(shader2)
-local lightning = jg.Shader(lighningShader)
-local diffuse = jg.Image("treestump_diffuse.png")
-local img = jg.Image("treestump.png")
-local img2 = jg.Image("lightning.png")
-local ww, wh = jg.size()
-src = jin.audio.Source("a.ogg")
-local scale = 2
-ww = ww / scale
-wh = wh / scale
-src:play()
-src:setLoop(true)
-src:setVolume(0.5)
-jin.audio.setVolume(0.1)
-jin.core.onLoad = function()
- jg.use(lightning)
- lightning:send("vec2", "iResolution", ww, wh)
- jg.unuse()
+ -- loghelper.log(loghelper.LEVEL.WARN, "版本" .. jin.revision())
end
-jin.core.onEvent = function(e)
- if e.type == "quit" then
- jin.core.stop()
- end
-end
-local mx, my
-local c = 0
-local t = 0
-jin.core.onUpdate = function(dt)
- t = t + dt
- mx, my = jin.mouse.position()
- mx = mx / 2
- my = my / 2
- my = wh - my
- c = c + 1
- if c == 50 then
- print(1/dt)
- c = 0
- end
-end
-img:setAnchor(16, 16)
-local cvs = jg.Canvas(320, 240)
-local i = 0
jin.core.onDraw = function()
--- if true then return end
- i = i + 0.001
- jg.bind(cvs)
- jg.draw(img, 10, 10)
- -- jg.use(lightning)
- -- lightning:send("number", "iTime", t)
- -- lightning:send("Image", "img", img2)
- -- jg.draw(img2, 20, 20)
- -- jg.unuse()
- jg.unbind()
- jg.draw(cvs, 0, 0, 2, 2)
-end
+
+end \ No newline at end of file