Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 24 additions & 4 deletions arcade/future/light/lights.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,18 +97,36 @@ def __init__(self, width: int, height: int):
self._rebuild = False
self._stride = 28
self._buffer = self.ctx.buffer(reserve=self._stride * 100)
# fmt: off
vertex_data = array('f', [
-1.0, +1.0, 0.0, 1.0,
-1.0, -1.0, 0.0, 0.0,
+1.0, +1.0, 1.0, 1.0,
+1.0, -1.0, 1.0, 0.0,
])
# fmt: on
self._vao = self.ctx.geometry(
[
gl.BufferDescription(
self.ctx.buffer(data=vertex_data),
"2f 2f",
["in_vert", "in_uv"],
),
gl.BufferDescription(
self._buffer,
"2f 1f 1f 3f",
["in_vert", "in_radius", "in_attenuation", "in_color"],
[
"in_instance_position",
"in_instance_radius",
"in_instance_attenuation",
"in_instance_color",
],
instanced=True,
),
]
)
self._light_program = self.ctx.load_program(
vertex_shader=":system:shaders/lights/point_lights_vs.glsl",
geometry_shader=":system:shaders/lights/point_lights_geo.glsl",
fragment_shader=":system:shaders/lights/point_lights_fs.glsl",
)
self._combine_program = self.ctx.load_program(
Expand Down Expand Up @@ -214,10 +232,12 @@ def draw(
self._light_buffer.use()
self._light_buffer.clear()
if len(self._lights) > 0:
self._light_program["position"] = position
self._light_program["offset"] = position
self.ctx.enable(self.ctx.BLEND)
self.ctx.blend_func = self.ctx.BLEND_ADDITIVE
self._vao.render(self._light_program, mode=self.ctx.POINTS, vertices=len(self._lights))
self._vao.render(
self._light_program, mode=self.ctx.TRIANGLE_STRIP, instances=len(self._lights)
)
self.ctx.blend_func = self.ctx.BLEND_DEFAULT

# Combine pass
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#version 330


out vec4 f_color;

in vec2 uv;
in float attenuation;
in vec3 color;
Expand Down
49 changes: 0 additions & 49 deletions arcade/resources/system/shaders/lights/point_lights_geo.glsl

This file was deleted.

31 changes: 21 additions & 10 deletions arcade/resources/system/shaders/lights/point_lights_vs.glsl
Original file line number Diff line number Diff line change
@@ -1,17 +1,28 @@
#version 330

uniform WindowBlock {
mat4 projection;
mat4 view;
} window;

uniform vec2 offset;

in vec2 in_vert;
in float in_radius;
in float in_attenuation;
in vec3 in_color;
in vec2 in_uv;

in vec2 in_instance_position;
in float in_instance_radius;
in float in_instance_attenuation;
in vec3 in_instance_color;

out float vs_radius;
out float vs_attenuation;
out vec3 vs_color;
out float attenuation;
out vec3 color;
out vec2 uv;

void main() {
gl_Position = vec4(in_vert, 0.0, 1.0);
vs_radius = in_radius;
vs_attenuation = in_attenuation;
vs_color = in_color / 255.0;
vec2 position = (in_vert * in_instance_radius) + in_instance_position + offset;
gl_Position = window.projection * window.view * vec4(position, 0.0, 1.0);
uv = in_uv;
attenuation = in_instance_attenuation;
color = in_instance_color / 255.0;
}
Loading