ruby_rpg 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/gl_native/gl_native.c +7 -0
- data/lib/engine/components/orthographic_camera.rb +7 -7
- data/lib/engine/components/perspective_camera.rb +11 -12
- data/lib/engine/components/point_light.rb +1 -1
- data/lib/engine/components/spot_light.rb +1 -1
- data/lib/engine/debug.rb +21 -0
- data/lib/engine/game_object.rb +18 -10
- data/lib/engine/gl.rb +5 -0
- data/lib/engine/rendering/debug_draw.rb +135 -0
- data/lib/engine/rendering/render_pipeline.rb +4 -0
- data/lib/engine/shaders/debug_composite_frag.glsl +38 -0
- data/lib/engine/shaders/debug_line_frag.glsl +10 -0
- data/lib/engine/shaders/debug_line_vertex.glsl +14 -0
- data/lib/engine/standard_objects/cube.rb +2 -1
- data/lib/engine/standard_objects/plane.rb +2 -1
- data/lib/engine/standard_objects/sphere.rb +2 -1
- data/lib/ruby_rpg.rb +2 -0
- metadata +6 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2af1c7ed1b41fa5eaabfdf70e7b3ba0edb82c2af7bf03f5c376e23d8ed16efd1
|
|
4
|
+
data.tar.gz: fb36bef8b832479b05401c0eb90522bd255ee40d8ad6357caf75bf40e685322a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b7976e4dae17174f3483a0ecd4da0fb9ad49a40943d2ad54a31381be28ced45d39c58f5683468f115c37a40d5762603a78121342a44dd16e6b56f87508b6ec94
|
|
7
|
+
data.tar.gz: aec55a9871b095a867397b9fe6d78ea0ecf21064c2bc41ec36841818ead2890334ee7faf327942370331f2213c7fb96862898b965e1abfe13cb04045e9a2338e
|
data/ext/gl_native/gl_native.c
CHANGED
|
@@ -224,6 +224,12 @@ static VALUE rb_gl_depth_func(VALUE self, VALUE func) {
|
|
|
224
224
|
return Qnil;
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
+
/* LineWidth(width) */
|
|
228
|
+
static VALUE rb_gl_line_width(VALUE self, VALUE width) {
|
|
229
|
+
glLineWidth((GLfloat)NUM2DBL(width));
|
|
230
|
+
return Qnil;
|
|
231
|
+
}
|
|
232
|
+
|
|
227
233
|
/* DrawBuffer(mode) */
|
|
228
234
|
static VALUE rb_gl_draw_buffer(VALUE self, VALUE mode) {
|
|
229
235
|
glDrawBuffer((GLenum)NUM2INT(mode));
|
|
@@ -521,6 +527,7 @@ void Init_gl_native(void) {
|
|
|
521
527
|
rb_define_module_function(mGLNative, "create_shader", rb_gl_create_shader, 1);
|
|
522
528
|
rb_define_module_function(mGLNative, "cull_face", rb_gl_cull_face, 1);
|
|
523
529
|
rb_define_module_function(mGLNative, "depth_func", rb_gl_depth_func, 1);
|
|
530
|
+
rb_define_module_function(mGLNative, "line_width", rb_gl_line_width, 1);
|
|
524
531
|
rb_define_module_function(mGLNative, "draw_buffer", rb_gl_draw_buffer, 1);
|
|
525
532
|
rb_define_module_function(mGLNative, "draw_buffers", rb_gl_draw_buffers, 2);
|
|
526
533
|
rb_define_module_function(mGLNative, "enable_vertex_attrib_array", rb_gl_enable_vertex_attrib_array, 1);
|
|
@@ -22,11 +22,12 @@ module Engine::Components
|
|
|
22
22
|
right = game_object.right
|
|
23
23
|
up = game_object.up
|
|
24
24
|
forward = game_object.forward
|
|
25
|
+
world_pos = game_object.world_pos
|
|
25
26
|
|
|
26
27
|
view_matrix = Matrix[
|
|
27
|
-
[right[0], right[1], right[2], -right.dot(
|
|
28
|
-
[up[0], up[1], up[2], -up.dot(
|
|
29
|
-
[forward[0], forward[1], forward[2], -forward.dot(
|
|
28
|
+
[right[0], right[1], right[2], -right.dot(world_pos)],
|
|
29
|
+
[up[0], up[1], up[2], -up.dot(world_pos)],
|
|
30
|
+
[forward[0], forward[1], forward[2], -forward.dot(world_pos)],
|
|
30
31
|
[0, 0, 0, 1]
|
|
31
32
|
]
|
|
32
33
|
|
|
@@ -39,7 +40,7 @@ module Engine::Components
|
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
def position
|
|
42
|
-
game_object.
|
|
43
|
+
game_object.world_pos
|
|
43
44
|
end
|
|
44
45
|
|
|
45
46
|
def projection
|
|
@@ -49,12 +50,11 @@ module Engine::Components
|
|
|
49
50
|
end
|
|
50
51
|
|
|
51
52
|
def update(delta_time)
|
|
52
|
-
if game_object.
|
|
53
|
+
if game_object.world_transform_version != @cached_transform_version
|
|
53
54
|
@matrix = nil
|
|
54
55
|
@inverse_vp_matrix = nil
|
|
55
56
|
end
|
|
56
|
-
@
|
|
57
|
-
@pos = game_object.pos.dup
|
|
57
|
+
@cached_transform_version = game_object.world_transform_version
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
end
|
|
@@ -22,11 +22,12 @@ module Engine::Components
|
|
|
22
22
|
right = game_object.right
|
|
23
23
|
up = game_object.up
|
|
24
24
|
forward = game_object.forward
|
|
25
|
+
world_pos = game_object.world_pos
|
|
25
26
|
|
|
26
27
|
transformation_matrix = Matrix[
|
|
27
|
-
[right[0], right[1], right[2], -right.dot(
|
|
28
|
-
[up[0], up[1], up[2], -up.dot(
|
|
29
|
-
[forward[0], forward[1], forward[2], -forward.dot(
|
|
28
|
+
[right[0], right[1], right[2], -right.dot(world_pos)],
|
|
29
|
+
[up[0], up[1], up[2], -up.dot(world_pos)],
|
|
30
|
+
[forward[0], forward[1], forward[2], -forward.dot(world_pos)],
|
|
30
31
|
[0, 0, 0, 1]
|
|
31
32
|
]
|
|
32
33
|
|
|
@@ -41,7 +42,7 @@ module Engine::Components
|
|
|
41
42
|
end
|
|
42
43
|
|
|
43
44
|
def position
|
|
44
|
-
game_object.
|
|
45
|
+
game_object.world_pos
|
|
45
46
|
end
|
|
46
47
|
|
|
47
48
|
def projection
|
|
@@ -53,24 +54,22 @@ module Engine::Components
|
|
|
53
54
|
right = game_object.right
|
|
54
55
|
up = game_object.up
|
|
55
56
|
forward = game_object.forward
|
|
56
|
-
|
|
57
|
+
world_pos = game_object.world_pos
|
|
57
58
|
|
|
58
59
|
Matrix[
|
|
59
|
-
[right[0], right[1], right[2], -right.dot(
|
|
60
|
-
[up[0], up[1], up[2], -up.dot(
|
|
61
|
-
[forward[0], forward[1], forward[2], -forward.dot(
|
|
60
|
+
[right[0], right[1], right[2], -right.dot(world_pos)],
|
|
61
|
+
[up[0], up[1], up[2], -up.dot(world_pos)],
|
|
62
|
+
[forward[0], forward[1], forward[2], -forward.dot(world_pos)],
|
|
62
63
|
[0, 0, 0, 1]
|
|
63
64
|
].transpose
|
|
64
65
|
end
|
|
65
66
|
|
|
66
67
|
def update(delta_time)
|
|
67
|
-
if game_object.
|
|
68
|
+
if game_object.world_transform_version != @cached_transform_version
|
|
68
69
|
@matrix = nil
|
|
69
70
|
@inverse_vp_matrix = nil
|
|
70
71
|
end
|
|
71
|
-
@
|
|
72
|
-
@pos = game_object.pos.dup
|
|
73
|
-
@scale = game_object.scale.dup
|
|
72
|
+
@cached_transform_version = game_object.world_transform_version
|
|
74
73
|
end
|
|
75
74
|
end
|
|
76
75
|
end
|
data/lib/engine/debug.rb
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Engine
|
|
4
|
+
module Debug
|
|
5
|
+
@lines = []
|
|
6
|
+
|
|
7
|
+
class << self
|
|
8
|
+
def line(from, to, color: [1, 1, 1])
|
|
9
|
+
@lines << { from: from, to: to, color: color }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def lines
|
|
13
|
+
@lines
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def clear
|
|
17
|
+
@lines.clear
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
data/lib/engine/game_object.rb
CHANGED
|
@@ -145,6 +145,11 @@ module Engine
|
|
|
145
145
|
@local_version += 1
|
|
146
146
|
end
|
|
147
147
|
|
|
148
|
+
def world_pos
|
|
149
|
+
m = model_matrix
|
|
150
|
+
@cached_world_pos ||= Vector[m[3, 0], m[3, 1], m[3, 2]]
|
|
151
|
+
end
|
|
152
|
+
|
|
148
153
|
def local_to_world_coordinate(local)
|
|
149
154
|
local_x4 = Matrix[[local[0], local[1], local[2], 1.0]]
|
|
150
155
|
world = local_x4 * model_matrix
|
|
@@ -158,7 +163,7 @@ module Engine
|
|
|
158
163
|
end
|
|
159
164
|
|
|
160
165
|
def local_to_world_direction(local)
|
|
161
|
-
local_to_world_coordinate(local) -
|
|
166
|
+
local_to_world_coordinate(local) - world_pos
|
|
162
167
|
end
|
|
163
168
|
|
|
164
169
|
def rotate_around(axis, angle)
|
|
@@ -175,6 +180,12 @@ module Engine
|
|
|
175
180
|
current_version = world_transform_version
|
|
176
181
|
return @cached_world_matrix if @cached_world_version == current_version
|
|
177
182
|
|
|
183
|
+
# Invalidate derived caches
|
|
184
|
+
@cached_world_pos = nil
|
|
185
|
+
@cached_right = nil
|
|
186
|
+
@cached_up = nil
|
|
187
|
+
@cached_forward = nil
|
|
188
|
+
|
|
178
189
|
@cached_world_version = current_version
|
|
179
190
|
@cached_world_matrix = compute_world_matrix
|
|
180
191
|
end
|
|
@@ -241,21 +252,18 @@ module Engine
|
|
|
241
252
|
end
|
|
242
253
|
|
|
243
254
|
def up
|
|
244
|
-
|
|
245
|
-
@
|
|
246
|
-
@up = local_to_world_direction(Vector[0, 1, 0])
|
|
255
|
+
model_matrix
|
|
256
|
+
@cached_up ||= local_to_world_direction(Vector[0, 1, 0])
|
|
247
257
|
end
|
|
248
258
|
|
|
249
259
|
def right
|
|
250
|
-
|
|
251
|
-
@
|
|
252
|
-
@right = local_to_world_direction(Vector[1, 0, 0])
|
|
260
|
+
model_matrix
|
|
261
|
+
@cached_right ||= local_to_world_direction(Vector[1, 0, 0])
|
|
253
262
|
end
|
|
254
263
|
|
|
255
264
|
def forward
|
|
256
|
-
|
|
257
|
-
@
|
|
258
|
-
@forward = local_to_world_direction(Vector[0, 0, 1])
|
|
265
|
+
model_matrix
|
|
266
|
+
@cached_forward ||= local_to_world_direction(Vector[0, 0, 1])
|
|
259
267
|
end
|
|
260
268
|
|
|
261
269
|
def self.destroy_all
|
data/lib/engine/gl.rb
CHANGED
|
@@ -232,6 +232,10 @@ module Engine
|
|
|
232
232
|
GLNative.get_uniform_location(program, name)
|
|
233
233
|
end
|
|
234
234
|
|
|
235
|
+
def self.LineWidth(width)
|
|
236
|
+
GLNative.line_width(width)
|
|
237
|
+
end
|
|
238
|
+
|
|
235
239
|
def self.LinkProgram(program)
|
|
236
240
|
GLNative.link_program(program)
|
|
237
241
|
end
|
|
@@ -360,6 +364,7 @@ module Engine
|
|
|
360
364
|
KEEP = 0x1E00
|
|
361
365
|
LESS = 0x0201
|
|
362
366
|
LINEAR = 0x2601
|
|
367
|
+
LINES = 0x0001
|
|
363
368
|
LINK_STATUS = 0x8B82
|
|
364
369
|
NEAREST = 0x2600
|
|
365
370
|
NONE = 0
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rendering
|
|
4
|
+
module DebugDraw
|
|
5
|
+
SCALE_FACTOR = 3 # Render at 1/3 resolution for thicker lines
|
|
6
|
+
|
|
7
|
+
class << self
|
|
8
|
+
def draw(target_framebuffer)
|
|
9
|
+
lines = Engine::Debug.lines
|
|
10
|
+
return if lines.empty?
|
|
11
|
+
|
|
12
|
+
update_render_texture_size
|
|
13
|
+
|
|
14
|
+
# Draw lines to low-res texture
|
|
15
|
+
render_texture.bind
|
|
16
|
+
Engine::GL.ClearColor(0.0, 0.0, 0.0, 0.0)
|
|
17
|
+
Engine::GL.Clear(Engine::GL::COLOR_BUFFER_BIT)
|
|
18
|
+
Engine::GL.Disable(Engine::GL::DEPTH_TEST)
|
|
19
|
+
|
|
20
|
+
line_shader.use
|
|
21
|
+
line_shader.set_mat4('camera', camera_matrix)
|
|
22
|
+
|
|
23
|
+
update_vertex_data(lines)
|
|
24
|
+
draw_lines(lines.size * 2)
|
|
25
|
+
|
|
26
|
+
# Composite onto main framebuffer
|
|
27
|
+
Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, target_framebuffer)
|
|
28
|
+
Engine::GL.Viewport(0, 0, Engine::Window.framebuffer_width, Engine::Window.framebuffer_height)
|
|
29
|
+
Engine::GL.Enable(Engine::GL::BLEND)
|
|
30
|
+
|
|
31
|
+
composite_material.set_runtime_texture('debugTexture', render_texture.color_texture)
|
|
32
|
+
composite_material.set_vec2('texelSize', [1.0 / render_texture.width, 1.0 / render_texture.height])
|
|
33
|
+
screen_quad.draw_with_material(composite_material)
|
|
34
|
+
|
|
35
|
+
Engine::Debug.clear
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def update_render_texture_size
|
|
41
|
+
width = Engine::Window.framebuffer_width / SCALE_FACTOR
|
|
42
|
+
height = Engine::Window.framebuffer_height / SCALE_FACTOR
|
|
43
|
+
width = [width, 1].max
|
|
44
|
+
height = [height, 1].max
|
|
45
|
+
|
|
46
|
+
if @render_texture.nil?
|
|
47
|
+
@render_texture = RenderTexture.new(width, height)
|
|
48
|
+
else
|
|
49
|
+
@render_texture.resize(width, height)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def render_texture
|
|
54
|
+
@render_texture
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def update_vertex_data(lines)
|
|
58
|
+
vertex_data = []
|
|
59
|
+
|
|
60
|
+
lines.each do |line|
|
|
61
|
+
vertex_data << line[:from][0] << line[:from][1] << line[:from][2]
|
|
62
|
+
vertex_data << line[:color][0] << line[:color][1] << line[:color][2]
|
|
63
|
+
|
|
64
|
+
vertex_data << line[:to][0] << line[:to][1] << line[:to][2]
|
|
65
|
+
vertex_data << line[:color][0] << line[:color][1] << line[:color][2]
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
Engine::GL.BindVertexArray(vao)
|
|
69
|
+
Engine::GL.BindBuffer(Engine::GL::ARRAY_BUFFER, vbo)
|
|
70
|
+
|
|
71
|
+
data = vertex_data.pack('f*')
|
|
72
|
+
Engine::GL.BufferData(Engine::GL::ARRAY_BUFFER, data.bytesize, data, Engine::GL::DYNAMIC_DRAW)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def draw_lines(vertex_count)
|
|
76
|
+
Engine::GL.BindVertexArray(vao)
|
|
77
|
+
Engine::GL.DrawArrays(Engine::GL::LINES, 0, vertex_count)
|
|
78
|
+
Engine::GL.BindVertexArray(0)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def camera_matrix
|
|
82
|
+
Engine::Camera.instance&.matrix || Matrix.identity(4)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def line_shader
|
|
86
|
+
@line_shader ||= Engine::Shader.for('debug_line_vertex.glsl', 'debug_line_frag.glsl', source: :engine)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def composite_shader
|
|
90
|
+
@composite_shader ||= Engine::Shader.for('fullscreen_vertex.glsl', 'debug_composite_frag.glsl', source: :engine)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def composite_material
|
|
94
|
+
@composite_material ||= Engine::Material.create(shader: composite_shader)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def screen_quad
|
|
98
|
+
@screen_quad ||= ScreenQuad.new
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def vao
|
|
102
|
+
setup_buffers unless @vao
|
|
103
|
+
@vao
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def vbo
|
|
107
|
+
setup_buffers unless @vbo
|
|
108
|
+
@vbo
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def setup_buffers
|
|
112
|
+
vao_buf = ' ' * 4
|
|
113
|
+
Engine::GL.GenVertexArrays(1, vao_buf)
|
|
114
|
+
@vao = vao_buf.unpack1('L')
|
|
115
|
+
|
|
116
|
+
vbo_buf = ' ' * 4
|
|
117
|
+
Engine::GL.GenBuffers(1, vbo_buf)
|
|
118
|
+
@vbo = vbo_buf.unpack1('L')
|
|
119
|
+
|
|
120
|
+
Engine::GL.BindVertexArray(@vao)
|
|
121
|
+
Engine::GL.BindBuffer(Engine::GL::ARRAY_BUFFER, @vbo)
|
|
122
|
+
|
|
123
|
+
stride = 6 * 4
|
|
124
|
+
|
|
125
|
+
Engine::GL.VertexAttribPointer(0, 3, Engine::GL::FLOAT, Engine::GL::FALSE, stride, 0)
|
|
126
|
+
Engine::GL.EnableVertexAttribArray(0)
|
|
127
|
+
|
|
128
|
+
Engine::GL.VertexAttribPointer(1, 3, Engine::GL::FLOAT, Engine::GL::FALSE, stride, 3 * 4)
|
|
129
|
+
Engine::GL.EnableVertexAttribArray(1)
|
|
130
|
+
|
|
131
|
+
Engine::GL.BindVertexArray(0)
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
@@ -30,6 +30,10 @@ module Rendering
|
|
|
30
30
|
|
|
31
31
|
current_texture = PostProcessingEffect.apply_all(render_texture_a, render_texture_b, screen_quad, normal_buffer, start_index: 1)
|
|
32
32
|
|
|
33
|
+
GpuTimer.measure(:debug) do
|
|
34
|
+
DebugDraw.draw(current_texture.framebuffer)
|
|
35
|
+
end
|
|
36
|
+
|
|
33
37
|
GpuTimer.measure(:ui) do
|
|
34
38
|
disable_depth_test
|
|
35
39
|
current_texture.bind
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#version 330 core
|
|
2
|
+
|
|
3
|
+
in vec2 TexCoords;
|
|
4
|
+
out vec4 FragColor;
|
|
5
|
+
|
|
6
|
+
uniform sampler2D debugTexture;
|
|
7
|
+
uniform vec2 texelSize; // 1.0 / textureSize
|
|
8
|
+
|
|
9
|
+
void main()
|
|
10
|
+
{
|
|
11
|
+
// Sample center and 8 neighbors for dilation
|
|
12
|
+
vec4 center = texture(debugTexture, TexCoords);
|
|
13
|
+
|
|
14
|
+
vec4 n = texture(debugTexture, TexCoords + vec2( 0.0, 1.0) * texelSize);
|
|
15
|
+
vec4 s = texture(debugTexture, TexCoords + vec2( 0.0, -1.0) * texelSize);
|
|
16
|
+
vec4 e = texture(debugTexture, TexCoords + vec2( 1.0, 0.0) * texelSize);
|
|
17
|
+
vec4 w = texture(debugTexture, TexCoords + vec2(-1.0, 0.0) * texelSize);
|
|
18
|
+
vec4 ne = texture(debugTexture, TexCoords + vec2( 1.0, 1.0) * texelSize);
|
|
19
|
+
vec4 nw = texture(debugTexture, TexCoords + vec2(-1.0, 1.0) * texelSize);
|
|
20
|
+
vec4 se = texture(debugTexture, TexCoords + vec2( 1.0, -1.0) * texelSize);
|
|
21
|
+
vec4 sw = texture(debugTexture, TexCoords + vec2(-1.0, -1.0) * texelSize);
|
|
22
|
+
|
|
23
|
+
// Weighted dilation - center has full weight, neighbors contribute
|
|
24
|
+
float cardinalWeight = 0.7;
|
|
25
|
+
float diagonalWeight = 0.5;
|
|
26
|
+
|
|
27
|
+
vec4 dilated = center;
|
|
28
|
+
dilated = max(dilated, n * cardinalWeight);
|
|
29
|
+
dilated = max(dilated, s * cardinalWeight);
|
|
30
|
+
dilated = max(dilated, e * cardinalWeight);
|
|
31
|
+
dilated = max(dilated, w * cardinalWeight);
|
|
32
|
+
dilated = max(dilated, ne * diagonalWeight);
|
|
33
|
+
dilated = max(dilated, nw * diagonalWeight);
|
|
34
|
+
dilated = max(dilated, se * diagonalWeight);
|
|
35
|
+
dilated = max(dilated, sw * diagonalWeight);
|
|
36
|
+
|
|
37
|
+
FragColor = dilated;
|
|
38
|
+
}
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
module Engine
|
|
4
4
|
module StandardObjects
|
|
5
5
|
module Cube
|
|
6
|
-
def self.create(pos: Vector[0, 0, 0], rotation: 0, scale: Vector[1, 1, 1], components: [], material: nil)
|
|
6
|
+
def self.create(pos: Vector[0, 0, 0], rotation: 0, scale: Vector[1, 1, 1], components: [], material: nil, parent: nil)
|
|
7
7
|
Engine::GameObject.create(
|
|
8
8
|
name: "Cube",
|
|
9
9
|
pos: pos,
|
|
10
10
|
rotation: rotation,
|
|
11
11
|
scale: scale,
|
|
12
|
+
parent: parent,
|
|
12
13
|
components: [
|
|
13
14
|
Engine::Components::MeshRenderer.create(
|
|
14
15
|
mesh: Engine::Mesh.for("cube", source: :engine),
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
module Engine
|
|
4
4
|
module StandardObjects
|
|
5
5
|
module Plane
|
|
6
|
-
def self.create(pos: Vector[0, 0, 0], rotation: 0, scale: Vector[1, 1, 1], components: [], material: nil)
|
|
6
|
+
def self.create(pos: Vector[0, 0, 0], rotation: 0, scale: Vector[1, 1, 1], components: [], material: nil, parent: nil)
|
|
7
7
|
Engine::GameObject.create(
|
|
8
8
|
name: "Plane",
|
|
9
9
|
pos: pos,
|
|
10
10
|
rotation: rotation,
|
|
11
11
|
scale: scale,
|
|
12
|
+
parent: parent,
|
|
12
13
|
components: [
|
|
13
14
|
Engine::Components::MeshRenderer.create(
|
|
14
15
|
mesh: Engine::Mesh.for("plane", source: :engine),
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
module Engine
|
|
4
4
|
module StandardObjects
|
|
5
5
|
module Sphere
|
|
6
|
-
def self.create(pos: Vector[0, 0, 0], rotation: 0, scale: Vector[1, 1, 1], components: [], material: nil)
|
|
6
|
+
def self.create(pos: Vector[0, 0, 0], rotation: 0, scale: Vector[1, 1, 1], components: [], material: nil, parent: nil)
|
|
7
7
|
Engine::GameObject.create(
|
|
8
8
|
name: "Sphere",
|
|
9
9
|
pos: pos,
|
|
10
10
|
rotation: rotation,
|
|
11
11
|
scale: scale,
|
|
12
|
+
parent: parent,
|
|
12
13
|
components: [
|
|
13
14
|
Engine::Components::MeshRenderer.create(
|
|
14
15
|
mesh: Engine::Mesh.for("sphere", source: :engine),
|
data/lib/ruby_rpg.rb
CHANGED
|
@@ -20,6 +20,7 @@ require_relative 'engine/serialization/graph_serializer'
|
|
|
20
20
|
require_relative 'engine/serialization/yaml_persistence'
|
|
21
21
|
require_relative 'engine/matrix_helpers'
|
|
22
22
|
require_relative "engine/debugging"
|
|
23
|
+
require_relative "engine/debug"
|
|
23
24
|
require_relative 'engine/rendering/render_texture'
|
|
24
25
|
require_relative 'engine/rendering/shadow_map_array'
|
|
25
26
|
require_relative 'engine/rendering/cubemap_shadow_map_array'
|
|
@@ -36,6 +37,7 @@ require_relative 'engine/rendering/post_processing/ssao_effect'
|
|
|
36
37
|
require_relative 'engine/rendering/skybox_cubemap'
|
|
37
38
|
require_relative 'engine/rendering/skybox_renderer'
|
|
38
39
|
require_relative 'engine/rendering/gpu_timer'
|
|
40
|
+
require_relative 'engine/rendering/debug_draw'
|
|
39
41
|
require_relative 'engine/rendering/render_pipeline'
|
|
40
42
|
require_relative 'engine/rendering/ui/stencil_manager'
|
|
41
43
|
require_relative 'engine/rendering/instance_renderer'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby_rpg
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Max Hatfull
|
|
@@ -179,6 +179,7 @@ files:
|
|
|
179
179
|
- lib/engine/compute_shader.rb
|
|
180
180
|
- lib/engine/compute_texture.rb
|
|
181
181
|
- lib/engine/cursor.rb
|
|
182
|
+
- lib/engine/debug.rb
|
|
182
183
|
- lib/engine/debugging.rb
|
|
183
184
|
- lib/engine/engine.rb
|
|
184
185
|
- lib/engine/font.rb
|
|
@@ -207,6 +208,7 @@ files:
|
|
|
207
208
|
- lib/engine/polygon_mesh.rb
|
|
208
209
|
- lib/engine/quaternion.rb
|
|
209
210
|
- lib/engine/rendering/cubemap_shadow_map_array.rb
|
|
211
|
+
- lib/engine/rendering/debug_draw.rb
|
|
210
212
|
- lib/engine/rendering/gpu_timer.rb
|
|
211
213
|
- lib/engine/rendering/instance_renderer.rb
|
|
212
214
|
- lib/engine/rendering/post_processing/bloom_effect.rb
|
|
@@ -233,6 +235,9 @@ files:
|
|
|
233
235
|
- lib/engine/shader.rb
|
|
234
236
|
- lib/engine/shaders/colour_frag.glsl
|
|
235
237
|
- lib/engine/shaders/colour_vertex.glsl
|
|
238
|
+
- lib/engine/shaders/debug_composite_frag.glsl
|
|
239
|
+
- lib/engine/shaders/debug_line_frag.glsl
|
|
240
|
+
- lib/engine/shaders/debug_line_vertex.glsl
|
|
236
241
|
- lib/engine/shaders/fullscreen_frag.glsl
|
|
237
242
|
- lib/engine/shaders/fullscreen_vertex.glsl
|
|
238
243
|
- lib/engine/shaders/instanced_sprite_frag.glsl
|