From fdaf0e7eb6b9d9bdd7d5ab5f814f4ebbf791ff67 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 16 May 2018 15:02:43 +0800 Subject: v0.1.0 --- test/README | 7 ++++ test/dynamic_light/config.lua | 7 ++++ test/dynamic_light/main.lua | 61 +++++++++++++++++++++++++++++++ test/dynamic_light/treestump.png | Bin 0 -> 4518 bytes test/dynamic_light/treestump_diffuse.png | Bin 0 -> 581 bytes test/dynamic_light/treestump_lines.png | Bin 0 -> 324 bytes 6 files changed, 75 insertions(+) create mode 100644 test/README create mode 100644 test/dynamic_light/config.lua create mode 100644 test/dynamic_light/main.lua create mode 100644 test/dynamic_light/treestump.png create mode 100644 test/dynamic_light/treestump_diffuse.png create mode 100644 test/dynamic_light/treestump_lines.png (limited to 'test') diff --git a/test/README b/test/README new file mode 100644 index 0000000..f017cfe --- /dev/null +++ b/test/README @@ -0,0 +1,7 @@ +usage + + jin [-d] + +for example + + jin test -d diff --git a/test/dynamic_light/config.lua b/test/dynamic_light/config.lua new file mode 100644 index 0000000..cf4d721 --- /dev/null +++ b/test/dynamic_light/config.lua @@ -0,0 +1,7 @@ +local config = {} + +config.width = 500 +config.height = 400 +config.fps = 60 + +return config diff --git a/test/dynamic_light/main.lua b/test/dynamic_light/main.lua new file mode 100644 index 0000000..0920687 --- /dev/null +++ b/test/dynamic_light/main.lua @@ -0,0 +1,61 @@ +local shader = [[ +extern Image diffuse; +extern number mx; +extern number my; + +vec4 effect(vec4 color, Image texture, vec2 texture_coords, vec2 pixel_coords) +{ + vec3 light_vec = vec3(mx ,my,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 jg = jin.graphics +local effect = jg.Shader(shader) +local diffuse = jg.Image("treestump_diffuse.png") +local img = jg.Image("treestump.png") + +jin.core.onEvent = function(e) + if e.type == "quit" then + jin.core.quit() + end +end + +jin.core.onUpdate = function() + local mx, my = jin.mouse.position() + my = 400 - my + effect:send("number", "mx", mx) + effect:send("number", "my", my) +end + +jin.core.onDraw = function() + effect:send("Image", "diffuse", diffuse); + jg.use(effect) + jg.draw(img, 250, 200, 5, 5) + +end diff --git a/test/dynamic_light/treestump.png b/test/dynamic_light/treestump.png new file mode 100644 index 0000000..45d8d28 Binary files /dev/null and b/test/dynamic_light/treestump.png differ diff --git a/test/dynamic_light/treestump_diffuse.png b/test/dynamic_light/treestump_diffuse.png new file mode 100644 index 0000000..272e6a2 Binary files /dev/null and b/test/dynamic_light/treestump_diffuse.png differ diff --git a/test/dynamic_light/treestump_lines.png b/test/dynamic_light/treestump_lines.png new file mode 100644 index 0000000..293a757 Binary files /dev/null and b/test/dynamic_light/treestump_lines.png differ -- cgit v1.1-26-g67d0