cyberarm_engine 0.24.3 → 0.24.5

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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +8 -8
  3. data/.rubocop.yml +7 -7
  4. data/.travis.yml +5 -5
  5. data/Gemfile +6 -6
  6. data/Gemfile.lock +24 -0
  7. data/LICENSE.txt +21 -21
  8. data/README.md +74 -74
  9. data/Rakefile +10 -10
  10. data/assets/shaders/fragment/g_buffer.glsl +30 -30
  11. data/assets/shaders/fragment/lighting.glsl +115 -69
  12. data/assets/shaders/include/light_struct.glsl +11 -11
  13. data/assets/shaders/include/material_struct.glsl +16 -16
  14. data/assets/shaders/vertex/g_buffer.glsl +28 -28
  15. data/assets/shaders/vertex/lighting.glsl +24 -24
  16. data/bin/console +14 -14
  17. data/bin/setup +8 -8
  18. data/cyberarm_engine.gemspec +36 -36
  19. data/lib/cyberarm_engine/animator.rb +219 -219
  20. data/lib/cyberarm_engine/background.rb +180 -179
  21. data/lib/cyberarm_engine/background_image.rb +93 -93
  22. data/lib/cyberarm_engine/background_nine_slice.rb +142 -142
  23. data/lib/cyberarm_engine/bounding_box.rb +150 -150
  24. data/lib/cyberarm_engine/builtin/intro_state.rb +130 -130
  25. data/lib/cyberarm_engine/cache/download_manager.rb +123 -123
  26. data/lib/cyberarm_engine/cache.rb +4 -4
  27. data/lib/cyberarm_engine/common.rb +128 -128
  28. data/lib/cyberarm_engine/config_file.rb +46 -46
  29. data/lib/cyberarm_engine/console/command.rb +157 -157
  30. data/lib/cyberarm_engine/console/commands/help_command.rb +43 -43
  31. data/lib/cyberarm_engine/console/subcommand.rb +99 -99
  32. data/lib/cyberarm_engine/console.rb +248 -248
  33. data/lib/cyberarm_engine/game_object.rb +244 -244
  34. data/lib/cyberarm_engine/game_state.rb +124 -124
  35. data/lib/cyberarm_engine/gosu_ext/draw_arc.rb +97 -97
  36. data/lib/cyberarm_engine/gosu_ext/draw_circle.rb +30 -30
  37. data/lib/cyberarm_engine/gosu_ext/draw_path.rb +17 -17
  38. data/lib/cyberarm_engine/model/material.rb +21 -21
  39. data/lib/cyberarm_engine/model/{model_object.rb → mesh.rb} +131 -131
  40. data/lib/cyberarm_engine/model/parser.rb +74 -74
  41. data/lib/cyberarm_engine/model/parsers/collada_parser.rb +138 -138
  42. data/lib/cyberarm_engine/model/parsers/wavefront_parser.rb +154 -154
  43. data/lib/cyberarm_engine/model.rb +216 -213
  44. data/lib/cyberarm_engine/model_cache.rb +31 -31
  45. data/lib/cyberarm_engine/notification.rb +82 -82
  46. data/lib/cyberarm_engine/notification_manager.rb +241 -241
  47. data/lib/cyberarm_engine/opengl/light.rb +52 -50
  48. data/lib/cyberarm_engine/opengl/orthographic_camera.rb +46 -46
  49. data/lib/cyberarm_engine/opengl/perspective_camera.rb +41 -38
  50. data/lib/cyberarm_engine/opengl/renderer/bounding_box_renderer.rb +249 -249
  51. data/lib/cyberarm_engine/opengl/renderer/g_buffer.rb +167 -165
  52. data/lib/cyberarm_engine/opengl/renderer/opengl_renderer.rb +307 -304
  53. data/lib/cyberarm_engine/opengl/renderer/renderer.rb +33 -33
  54. data/lib/cyberarm_engine/opengl/shader.rb +408 -406
  55. data/lib/cyberarm_engine/opengl/texture.rb +69 -69
  56. data/lib/cyberarm_engine/opengl.rb +53 -40
  57. data/lib/cyberarm_engine/ray.rb +56 -56
  58. data/lib/cyberarm_engine/stats.rb +200 -200
  59. data/lib/cyberarm_engine/text.rb +260 -260
  60. data/lib/cyberarm_engine/timer.rb +23 -23
  61. data/lib/cyberarm_engine/transform.rb +296 -296
  62. data/lib/cyberarm_engine/trees/aabb_node.rb +126 -0
  63. data/lib/cyberarm_engine/trees/aabb_tree.rb +55 -0
  64. data/lib/cyberarm_engine/trees/aabb_tree_debug.rb +29 -0
  65. data/lib/cyberarm_engine/ui/border_canvas.rb +102 -102
  66. data/lib/cyberarm_engine/ui/dsl.rb +142 -142
  67. data/lib/cyberarm_engine/ui/element.rb +662 -662
  68. data/lib/cyberarm_engine/ui/elements/button.rb +100 -100
  69. data/lib/cyberarm_engine/ui/elements/check_box.rb +54 -54
  70. data/lib/cyberarm_engine/ui/elements/container.rb +404 -410
  71. data/lib/cyberarm_engine/ui/elements/edit_box.rb +179 -179
  72. data/lib/cyberarm_engine/ui/elements/edit_line.rb +297 -297
  73. data/lib/cyberarm_engine/ui/elements/flow.rb +15 -15
  74. data/lib/cyberarm_engine/ui/elements/image.rb +72 -72
  75. data/lib/cyberarm_engine/ui/elements/list_box.rb +79 -79
  76. data/lib/cyberarm_engine/ui/elements/menu.rb +27 -27
  77. data/lib/cyberarm_engine/ui/elements/menu_item.rb +6 -6
  78. data/lib/cyberarm_engine/ui/elements/progress.rb +93 -93
  79. data/lib/cyberarm_engine/ui/elements/radio.rb +6 -6
  80. data/lib/cyberarm_engine/ui/elements/slider.rb +107 -107
  81. data/lib/cyberarm_engine/ui/elements/stack.rb +11 -11
  82. data/lib/cyberarm_engine/ui/elements/text_block.rb +216 -216
  83. data/lib/cyberarm_engine/ui/elements/toggle_button.rb +67 -67
  84. data/lib/cyberarm_engine/ui/event.rb +54 -54
  85. data/lib/cyberarm_engine/ui/gui_state.rb +321 -321
  86. data/lib/cyberarm_engine/ui/style.rb +50 -50
  87. data/lib/cyberarm_engine/ui/theme.rb +225 -225
  88. data/lib/cyberarm_engine/vector.rb +312 -312
  89. data/lib/cyberarm_engine/version.rb +4 -4
  90. data/lib/cyberarm_engine/window.rb +195 -195
  91. data/lib/cyberarm_engine.rb +70 -78
  92. data/mrbgem.rake +29 -29
  93. metadata +8 -7
@@ -1,165 +1,167 @@
1
- module CyberarmEngine
2
- class GBuffer
3
- attr_reader :screen_vbo, :vertices, :uvs
4
- attr_reader :width, :height
5
-
6
- def initialize(width:, height:)
7
- @width = width
8
- @height = height
9
-
10
- @framebuffer = nil
11
- @buffers = %i[position diffuse normal texcoord]
12
- @textures = {}
13
- @screen_vbo = nil
14
- @ready = false
15
-
16
- @vertices = [
17
- -1.0, -1.0, 0,
18
- 1.0, -1.0, 0,
19
- -1.0, 1.0, 0,
20
-
21
- -1.0, 1.0, 0,
22
- 1.0, -1.0, 0,
23
- 1.0, 1.0, 0
24
- ].freeze
25
-
26
- @uvs = [
27
- 0, 0,
28
- 1, 0,
29
- 0, 1,
30
-
31
- 0, 1,
32
- 1, 0,
33
- 1, 1
34
- ].freeze
35
-
36
- create_framebuffer
37
- create_screen_vbo
38
- end
39
-
40
- def create_framebuffer
41
- buffer = " " * 4
42
- glGenFramebuffers(1, buffer)
43
- @framebuffer = buffer.unpack1("L2")
44
-
45
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, @framebuffer)
46
-
47
- create_textures
48
-
49
- status = glCheckFramebufferStatus(GL_FRAMEBUFFER)
50
-
51
- if status != GL_FRAMEBUFFER_COMPLETE
52
- message = ""
53
-
54
- message = case status
55
- when GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
56
- "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"
57
- when GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
58
- "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"
59
- when GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
60
- "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER"
61
- when GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER
62
- "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER"
63
- when GL_FRAMEBUFFER_UNSUPPORTED
64
- "GL_FRAMEBUFFER_UNSUPPORTED"
65
- else
66
- "Unknown error!"
67
- end
68
- puts "Incomplete framebuffer: #{status}\nError: #{message}"
69
- else
70
- @ready = true
71
- end
72
-
73
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0)
74
- end
75
-
76
- def create_textures
77
- @buffers.size.times do |i|
78
- buffer = " " * 4
79
- glGenTextures(1, buffer)
80
- texture_id = buffer.unpack1("L2")
81
- @textures[@buffers[i]] = texture_id
82
-
83
- glBindTexture(GL_TEXTURE_2D, texture_id)
84
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, @width, @height, 0, GL_RGBA, GL_FLOAT, nil)
85
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
86
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
87
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i, GL_TEXTURE_2D, texture_id, 0)
88
- end
89
-
90
- buffer = " " * 4
91
- glGenTextures(1, buffer)
92
- texture_id = buffer.unpack1("L2")
93
- @textures[:depth] = texture_id
94
-
95
- glBindTexture(GL_TEXTURE_2D, texture_id)
96
- glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32F, @width, @height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, nil)
97
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texture_id, 0)
98
-
99
- draw_buffers = [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3]
100
- glDrawBuffers(draw_buffers.size, draw_buffers.pack("I*"))
101
- end
102
-
103
- def create_screen_vbo
104
- buffer = " " * 4
105
- glGenVertexArrays(1, buffer)
106
- @screen_vbo = buffer.unpack1("L2")
107
-
108
- buffer = " " * 4
109
- glGenBuffers(1, buffer)
110
- @positions_buffer_id = buffer.unpack1("L2")
111
-
112
- buffer = " " * 4
113
- glGenBuffers(1, buffer)
114
- @uvs_buffer_id = buffer.unpack1("L2")
115
-
116
- glBindVertexArray(@screen_vbo)
117
- glBindBuffer(GL_ARRAY_BUFFER, @positions_buffer_id)
118
- glBufferData(GL_ARRAY_BUFFER, @vertices.size * Fiddle::SIZEOF_FLOAT, @vertices.pack("f*"), GL_STATIC_DRAW)
119
- glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, nil)
120
-
121
- glBindBuffer(GL_ARRAY_BUFFER, @uvs_buffer_id)
122
- glBufferData(GL_ARRAY_BUFFER, @uvs.size * Fiddle::SIZEOF_FLOAT, @uvs.pack("f*"), GL_STATIC_DRAW)
123
- glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, nil)
124
-
125
- glEnableVertexAttribArray(0)
126
- glEnableVertexAttribArray(1)
127
-
128
- glBindVertexArray(0)
129
- end
130
-
131
- def bind_for_writing
132
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, @framebuffer)
133
- end
134
-
135
- def bind_for_reading
136
- glBindFramebuffer(GL_READ_FRAMEBUFFER, @framebuffer)
137
- end
138
-
139
- def set_read_buffer(buffer)
140
- glReadBuffer(GL_COLOR_ATTACHMENT0 + @textures.keys.index(buffer))
141
- end
142
-
143
- def set_read_buffer_depth
144
- glReadBuffer(GL_DEPTH_ATTACHMENT)
145
- end
146
-
147
- def unbind_framebuffer
148
- glBindFramebuffer(GL_FRAMEBUFFER, 0)
149
- end
150
-
151
- def texture(type)
152
- @textures[type]
153
- end
154
-
155
- def clean_up
156
- glDeleteFramebuffers(1, [@framebuffer].pack("L"))
157
-
158
- glDeleteTextures(@textures.values.size, @textures.values.pack("L*"))
159
-
160
- glDeleteBuffers(2, [@positions_buffer_id, @uvs_buffer_id].pack("L*"))
161
- glDeleteVertexArrays(1, [@screen_vbo].pack("L"))
162
- gl_error?
163
- end
164
- end
165
- end
1
+ module CyberarmEngine
2
+ class GBuffer
3
+ include OpenGL
4
+
5
+ attr_reader :screen_vbo, :vertices, :uvs
6
+ attr_reader :width, :height
7
+
8
+ def initialize(width:, height:)
9
+ @width = width
10
+ @height = height
11
+
12
+ @framebuffer = nil
13
+ @buffers = %i[position diffuse normal texcoord]
14
+ @textures = {}
15
+ @screen_vbo = nil
16
+ @ready = false
17
+
18
+ @vertices = [
19
+ -1.0, -1.0, 0,
20
+ 1.0, -1.0, 0,
21
+ -1.0, 1.0, 0,
22
+
23
+ -1.0, 1.0, 0,
24
+ 1.0, -1.0, 0,
25
+ 1.0, 1.0, 0
26
+ ].freeze
27
+
28
+ @uvs = [
29
+ 0, 0,
30
+ 1, 0,
31
+ 0, 1,
32
+
33
+ 0, 1,
34
+ 1, 0,
35
+ 1, 1
36
+ ].freeze
37
+
38
+ create_framebuffer
39
+ create_screen_vbo
40
+ end
41
+
42
+ def create_framebuffer
43
+ buffer = " " * 4
44
+ glGenFramebuffers(1, buffer)
45
+ @framebuffer = buffer.unpack1("L2")
46
+
47
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, @framebuffer)
48
+
49
+ create_textures
50
+
51
+ status = glCheckFramebufferStatus(GL_FRAMEBUFFER)
52
+
53
+ if status != GL_FRAMEBUFFER_COMPLETE
54
+ message = ""
55
+
56
+ message = case status
57
+ when GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
58
+ "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"
59
+ when GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
60
+ "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"
61
+ when GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
62
+ "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER"
63
+ when GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER
64
+ "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER"
65
+ when GL_FRAMEBUFFER_UNSUPPORTED
66
+ "GL_FRAMEBUFFER_UNSUPPORTED"
67
+ else
68
+ "Unknown error!"
69
+ end
70
+ puts "Incomplete framebuffer: #{status}\nError: #{message}"
71
+ else
72
+ @ready = true
73
+ end
74
+
75
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0)
76
+ end
77
+
78
+ def create_textures
79
+ @buffers.size.times do |i|
80
+ buffer = " " * 4
81
+ glGenTextures(1, buffer)
82
+ texture_id = buffer.unpack1("L2")
83
+ @textures[@buffers[i]] = texture_id
84
+
85
+ glBindTexture(GL_TEXTURE_2D, texture_id)
86
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, @width, @height, 0, GL_RGBA, GL_FLOAT, nil)
87
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
88
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
89
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i, GL_TEXTURE_2D, texture_id, 0)
90
+ end
91
+
92
+ buffer = " " * 4
93
+ glGenTextures(1, buffer)
94
+ texture_id = buffer.unpack1("L2")
95
+ @textures[:depth] = texture_id
96
+
97
+ glBindTexture(GL_TEXTURE_2D, texture_id)
98
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32F, @width, @height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, nil)
99
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texture_id, 0)
100
+
101
+ draw_buffers = [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3]
102
+ glDrawBuffers(draw_buffers.size, draw_buffers.pack("I*"))
103
+ end
104
+
105
+ def create_screen_vbo
106
+ buffer = " " * 4
107
+ glGenVertexArrays(1, buffer)
108
+ @screen_vbo = buffer.unpack1("L2")
109
+
110
+ buffer = " " * 4
111
+ glGenBuffers(1, buffer)
112
+ @positions_buffer_id = buffer.unpack1("L2")
113
+
114
+ buffer = " " * 4
115
+ glGenBuffers(1, buffer)
116
+ @uvs_buffer_id = buffer.unpack1("L2")
117
+
118
+ glBindVertexArray(@screen_vbo)
119
+ glBindBuffer(GL_ARRAY_BUFFER, @positions_buffer_id)
120
+ glBufferData(GL_ARRAY_BUFFER, @vertices.size * Fiddle::SIZEOF_FLOAT, @vertices.pack("f*"), GL_STATIC_DRAW)
121
+ glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, nil)
122
+
123
+ glBindBuffer(GL_ARRAY_BUFFER, @uvs_buffer_id)
124
+ glBufferData(GL_ARRAY_BUFFER, @uvs.size * Fiddle::SIZEOF_FLOAT, @uvs.pack("f*"), GL_STATIC_DRAW)
125
+ glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, nil)
126
+
127
+ glEnableVertexAttribArray(0)
128
+ glEnableVertexAttribArray(1)
129
+
130
+ glBindVertexArray(0)
131
+ end
132
+
133
+ def bind_for_writing
134
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, @framebuffer)
135
+ end
136
+
137
+ def bind_for_reading
138
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, @framebuffer)
139
+ end
140
+
141
+ def set_read_buffer(buffer)
142
+ glReadBuffer(GL_COLOR_ATTACHMENT0 + @textures.keys.index(buffer))
143
+ end
144
+
145
+ def set_read_buffer_depth
146
+ glReadBuffer(GL_DEPTH_ATTACHMENT)
147
+ end
148
+
149
+ def unbind_framebuffer
150
+ glBindFramebuffer(GL_FRAMEBUFFER, 0)
151
+ end
152
+
153
+ def texture(type)
154
+ @textures[type]
155
+ end
156
+
157
+ def clean_up
158
+ glDeleteFramebuffers(1, [@framebuffer].pack("L"))
159
+
160
+ glDeleteTextures(@textures.values.size, @textures.values.pack("L*"))
161
+
162
+ glDeleteBuffers(2, [@positions_buffer_id, @uvs_buffer_id].pack("L*"))
163
+ glDeleteVertexArrays(1, [@screen_vbo].pack("L"))
164
+ gl_error?
165
+ end
166
+ end
167
+ end