mittsu 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/build-workflow.yml +3 -38
- data/Gemfile +0 -4
- data/README.md +16 -130
- data/bin/console +0 -4
- data/lib/mittsu/cameras/cube_camera.rb +1 -1
- data/lib/mittsu/core/uniform.rb +23 -0
- data/lib/mittsu/core.rb +1 -0
- data/lib/mittsu/loaders/stl_loader.rb +186 -0
- data/lib/mittsu/loaders.rb +1 -0
- data/lib/mittsu/textures/render_target.rb +93 -0
- data/lib/mittsu/textures/render_target_cube.rb +8 -0
- data/lib/mittsu/textures/texture.rb +1 -1
- data/lib/mittsu/textures.rb +2 -0
- data/lib/mittsu/version.rb +1 -1
- data/lib/mittsu.rb +0 -1
- data/mittsu.gemspec +8 -12
- metadata +28 -199
- data/install-glfw.ps1 +0 -13
- data/lib/mittsu/renderers/generic_lib.rb +0 -125
- data/lib/mittsu/renderers/glfw_lib.rb +0 -64
- data/lib/mittsu/renderers/glfw_window.rb +0 -233
- data/lib/mittsu/renderers/opengl/core/buffer_geometry.rb +0 -11
- data/lib/mittsu/renderers/opengl/core/geometry.rb +0 -346
- data/lib/mittsu/renderers/opengl/core/object_3d.rb +0 -134
- data/lib/mittsu/renderers/opengl/lights/ambient_light.rb +0 -26
- data/lib/mittsu/renderers/opengl/lights/directional_light.rb +0 -35
- data/lib/mittsu/renderers/opengl/lights/hemisphere_light.rb +0 -39
- data/lib/mittsu/renderers/opengl/lights/light.rb +0 -55
- data/lib/mittsu/renderers/opengl/lights/point_light.rb +0 -36
- data/lib/mittsu/renderers/opengl/lights/spot_light.rb +0 -47
- data/lib/mittsu/renderers/opengl/materials/line_basic_material.rb +0 -16
- data/lib/mittsu/renderers/opengl/materials/material.rb +0 -274
- data/lib/mittsu/renderers/opengl/materials/mesh_basic_material.rb +0 -21
- data/lib/mittsu/renderers/opengl/materials/mesh_lambert_material.rb +0 -33
- data/lib/mittsu/renderers/opengl/materials/mesh_phong_material.rb +0 -44
- data/lib/mittsu/renderers/opengl/materials/opengl_material_basics.rb +0 -57
- data/lib/mittsu/renderers/opengl/materials/point_cloud_material.rb +0 -27
- data/lib/mittsu/renderers/opengl/materials/shader_material.rb +0 -11
- data/lib/mittsu/renderers/opengl/objects/group.rb +0 -9
- data/lib/mittsu/renderers/opengl/objects/line.rb +0 -45
- data/lib/mittsu/renderers/opengl/objects/mesh.rb +0 -70
- data/lib/mittsu/renderers/opengl/objects/point_cloud.rb +0 -39
- data/lib/mittsu/renderers/opengl/objects/sprite.rb +0 -12
- data/lib/mittsu/renderers/opengl/opengl_buffer.rb +0 -13
- data/lib/mittsu/renderers/opengl/opengl_debug.rb +0 -81
- data/lib/mittsu/renderers/opengl/opengl_default_target.rb +0 -50
- data/lib/mittsu/renderers/opengl/opengl_geometry_group.rb +0 -758
- data/lib/mittsu/renderers/opengl/opengl_geometry_like.rb +0 -132
- data/lib/mittsu/renderers/opengl/opengl_helper.rb +0 -161
- data/lib/mittsu/renderers/opengl/opengl_implementations.rb +0 -37
- data/lib/mittsu/renderers/opengl/opengl_lib.rb +0 -19
- data/lib/mittsu/renderers/opengl/opengl_light_renderer.rb +0 -43
- data/lib/mittsu/renderers/opengl/opengl_mittsu_params.rb +0 -53
- data/lib/mittsu/renderers/opengl/opengl_program.rb +0 -250
- data/lib/mittsu/renderers/opengl/opengl_shader.rb +0 -58
- data/lib/mittsu/renderers/opengl/opengl_state.rb +0 -205
- data/lib/mittsu/renderers/opengl/plugins/shadow_map_plugin.rb +0 -417
- data/lib/mittsu/renderers/opengl/plugins/sprite_fragment.glsl +0 -38
- data/lib/mittsu/renderers/opengl/plugins/sprite_plugin.rb +0 -250
- data/lib/mittsu/renderers/opengl/plugins/sprite_vertex.glsl +0 -31
- data/lib/mittsu/renderers/opengl/scenes/scene.rb +0 -9
- data/lib/mittsu/renderers/opengl/textures/compressed_texture.rb +0 -20
- data/lib/mittsu/renderers/opengl/textures/cube_texture.rb +0 -77
- data/lib/mittsu/renderers/opengl/textures/data_texture.rb +0 -21
- data/lib/mittsu/renderers/opengl/textures/texture.rb +0 -107
- data/lib/mittsu/renderers/opengl_render_target.rb +0 -201
- data/lib/mittsu/renderers/opengl_renderer.rb +0 -1028
- data/lib/mittsu/renderers/shaders/rbsl_loader.rb +0 -166
- data/lib/mittsu/renderers/shaders/shader_chunk/alphamap_fragment.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/alphamap_pars_fragment.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/alphatest_fragment.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/bumpmap_pars_fragment.glsl +0 -40
- data/lib/mittsu/renderers/shaders/shader_chunk/color_fragment.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/color_pars_fragment.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/color_pars_vertex.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/color_vertex.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/common.glsl +0 -60
- data/lib/mittsu/renderers/shaders/shader_chunk/default_vertex.glsl +0 -15
- data/lib/mittsu/renderers/shaders/shader_chunk/defaultnormal_vertex.glsl +0 -21
- data/lib/mittsu/renderers/shaders/shader_chunk/envmap_fragment.glsl +0 -62
- data/lib/mittsu/renderers/shaders/shader_chunk/envmap_pars_fragment.glsl +0 -21
- data/lib/mittsu/renderers/shaders/shader_chunk/envmap_pars_vertex.glsl +0 -7
- data/lib/mittsu/renderers/shaders/shader_chunk/envmap_vertex.glsl +0 -17
- data/lib/mittsu/renderers/shaders/shader_chunk/fog_fragment.glsl +0 -26
- data/lib/mittsu/renderers/shaders/shader_chunk/fog_pars_fragment.glsl +0 -15
- data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_fragment.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_pars_fragment.glsl +0 -6
- data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_pars_vertex.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_vertex.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/lights_lambert_pars_vertex.glsl +0 -43
- data/lib/mittsu/renderers/shaders/shader_chunk/lights_lambert_vertex.glsl +0 -196
- data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_fragment.glsl +0 -243
- data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_pars_fragment.glsl +0 -58
- data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_pars_vertex.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_vertex.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/linear_to_gamma_fragment.glsl +0 -2
- data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_fragment.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_pars_fragment.glsl +0 -12
- data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_pars_vertex.glsl +0 -11
- data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_vertex.glsl +0 -15
- data/lib/mittsu/renderers/shaders/shader_chunk/map_fragment.glsl +0 -9
- data/lib/mittsu/renderers/shaders/shader_chunk/map_pars_fragment.glsl +0 -11
- data/lib/mittsu/renderers/shaders/shader_chunk/map_pars_vertex.glsl +0 -6
- data/lib/mittsu/renderers/shaders/shader_chunk/map_particle_fragment.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/map_particle_pars_fragment.glsl +0 -6
- data/lib/mittsu/renderers/shaders/shader_chunk/map_vertex.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/morphnormal_vertex.glsl +0 -12
- data/lib/mittsu/renderers/shaders/shader_chunk/morphtarget_pars_vertex.glsl +0 -13
- data/lib/mittsu/renderers/shaders/shader_chunk/morphtarget_vertex.glsl +0 -20
- data/lib/mittsu/renderers/shaders/shader_chunk/normalmap_pars_fragment.glsl +0 -27
- data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_fragment.glsl +0 -216
- data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_pars_fragment.glsl +0 -19
- data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_pars_vertex.glsl +0 -6
- data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_vertex.glsl +0 -9
- data/lib/mittsu/renderers/shaders/shader_chunk/skinbase_vertex.glsl +0 -8
- data/lib/mittsu/renderers/shaders/shader_chunk/skinning_pars_vertex.glsl +0 -47
- data/lib/mittsu/renderers/shaders/shader_chunk/skinning_vertex.glsl +0 -20
- data/lib/mittsu/renderers/shaders/shader_chunk/skinnormal_vertex.glsl +0 -20
- data/lib/mittsu/renderers/shaders/shader_chunk/specularmap_fragment.glsl +0 -12
- data/lib/mittsu/renderers/shaders/shader_chunk/specularmap_pars_fragment.glsl +0 -5
- data/lib/mittsu/renderers/shaders/shader_chunk/worldpos_vertex.glsl +0 -17
- data/lib/mittsu/renderers/shaders/shader_chunk.rb +0 -9
- data/lib/mittsu/renderers/shaders/shader_lib/basic/basic_fragment.rbsl +0 -37
- data/lib/mittsu/renderers/shaders/shader_lib/basic/basic_uniforms.rbslu +0 -3
- data/lib/mittsu/renderers/shaders/shader_lib/basic/basic_vertex.rbsl +0 -33
- data/lib/mittsu/renderers/shaders/shader_lib/cube/cube_fragment.rbsl +0 -12
- data/lib/mittsu/renderers/shaders/shader_lib/cube/cube_uniforms.rbslu +0 -2
- data/lib/mittsu/renderers/shaders/shader_lib/cube/cube_vertex.rbsl +0 -12
- data/lib/mittsu/renderers/shaders/shader_lib/depth_rgba/depth_rgba_fragment.rbsl +0 -26
- data/lib/mittsu/renderers/shaders/shader_lib/depth_rgba/depth_rgba_uniforms.rbslu +0 -0
- data/lib/mittsu/renderers/shaders/shader_lib/depth_rgba/depth_rgba_vertex.rbsl +0 -12
- data/lib/mittsu/renderers/shaders/shader_lib/lambert/lambert_fragment.rbsl +0 -56
- data/lib/mittsu/renderers/shaders/shader_lib/lambert/lambert_uniforms.rbslu +0 -7
- data/lib/mittsu/renderers/shaders/shader_lib/lambert/lambert_vertex.rbsl +0 -37
- data/lib/mittsu/renderers/shaders/shader_lib/particle_basic/particle_basic_fragment.rbsl +0 -27
- data/lib/mittsu/renderers/shaders/shader_lib/particle_basic/particle_basic_uniforms.rbslu +0 -2
- data/lib/mittsu/renderers/shaders/shader_lib/particle_basic/particle_basic_vertex.rbsl +0 -25
- data/lib/mittsu/renderers/shaders/shader_lib/phong/phong_fragment.rbsl +0 -45
- data/lib/mittsu/renderers/shaders/shader_lib/phong/phong_uniforms.rbslu +0 -11
- data/lib/mittsu/renderers/shaders/shader_lib/phong/phong_vertex.rbsl +0 -43
- data/lib/mittsu/renderers/shaders/shader_lib.rb +0 -43
- data/lib/mittsu/renderers/shaders/shader_templates/fragment.glsl.erb +0 -105
- data/lib/mittsu/renderers/shaders/shader_templates/vertex.glsl.erb +0 -143
- data/lib/mittsu/renderers/shaders/uniforms_lib.rb +0 -106
- data/lib/mittsu/renderers/shaders/uniforms_utils.rb +0 -31
- data/lib/mittsu/renderers.rb +0 -1
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'mittsu/renderers/opengl/materials/opengl_material_basics'
|
2
|
-
|
3
|
-
module Mittsu
|
4
|
-
class MeshLambertMaterial
|
5
|
-
include OpenGLMaterialBasics
|
6
|
-
|
7
|
-
def refresh_uniforms(uniforms)
|
8
|
-
refresh_uniforms_basic(uniforms)
|
9
|
-
|
10
|
-
uniforms['emissive'].value = emissive
|
11
|
-
|
12
|
-
if wrap_around
|
13
|
-
uniforms['wrapRGB'].value.copy(wrap_rgb)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def needs_view_matrix_uniform?
|
18
|
-
true
|
19
|
-
end
|
20
|
-
|
21
|
-
def needs_lights?
|
22
|
-
true
|
23
|
-
end
|
24
|
-
|
25
|
-
def init_shader
|
26
|
-
@shader = ShaderLib.create_shader(shader_id)
|
27
|
-
end
|
28
|
-
|
29
|
-
def shader_id
|
30
|
-
:lambert
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'mittsu/renderers/opengl/materials/opengl_material_basics'
|
2
|
-
|
3
|
-
module Mittsu
|
4
|
-
class MeshPhongMaterial
|
5
|
-
include OpenGLMaterialBasics
|
6
|
-
|
7
|
-
def needs_face_normals?
|
8
|
-
false
|
9
|
-
end
|
10
|
-
|
11
|
-
def refresh_uniforms(uniforms)
|
12
|
-
refresh_uniforms_basic(uniforms)
|
13
|
-
|
14
|
-
uniforms['shininess'].value = shininess
|
15
|
-
|
16
|
-
uniforms['emissive'].value = emissive
|
17
|
-
uniforms['specular'].value = specular
|
18
|
-
|
19
|
-
if wrap_around
|
20
|
-
uniforms['wrapRGB'].value.copy(wrap_rgb)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def needs_camera_position_uniform?
|
25
|
-
true
|
26
|
-
end
|
27
|
-
|
28
|
-
def needs_view_matrix_uniform?
|
29
|
-
true
|
30
|
-
end
|
31
|
-
|
32
|
-
def needs_lights?
|
33
|
-
true
|
34
|
-
end
|
35
|
-
|
36
|
-
def init_shader
|
37
|
-
@shader = ShaderLib.create_shader(shader_id)
|
38
|
-
end
|
39
|
-
|
40
|
-
def shader_id
|
41
|
-
:phong
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
module Mittsu
|
2
|
-
module OpenGLMaterialBasics
|
3
|
-
def refresh_uniforms_basic(uniforms)
|
4
|
-
refresh_map_uniforms(uniforms)
|
5
|
-
refresh_env_map_uniforms(uniforms)
|
6
|
-
refresh_other_uniforms(uniforms)
|
7
|
-
end
|
8
|
-
|
9
|
-
def refresh_map_uniforms(uniforms)
|
10
|
-
uniforms['map'].value = map
|
11
|
-
uniforms['lightMap'].value = light_map
|
12
|
-
uniforms['specularMap'].value = specular_map
|
13
|
-
uniforms['alphaMap'].value = alpha_map
|
14
|
-
|
15
|
-
if bump_map
|
16
|
-
uniforms['bumpMap'].value = bump_map
|
17
|
-
uniforms['bumpScale'].value = bump_scale
|
18
|
-
end
|
19
|
-
|
20
|
-
if normal_map
|
21
|
-
uniforms['normalMap'].value = normal_map
|
22
|
-
uniforms['normalScale'].value.copy(normal_scale)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def refresh_env_map_uniforms(uniforms)
|
27
|
-
uv_scale_map = get_uv_scale_map
|
28
|
-
|
29
|
-
if uv_scale_map
|
30
|
-
offset = uv_scale_map.offset
|
31
|
-
repeat = uv_scale_map.repeat
|
32
|
-
|
33
|
-
uniforms['offsetRepeat'].value.set(offset.x, offset.y, repeat.x, repeat.y)
|
34
|
-
end
|
35
|
-
|
36
|
-
uniforms['envMap'].value = env_map
|
37
|
-
# TODO: when OpenGLRenderTargetCube exists
|
38
|
-
# uniforms['flipEnvMap'].value = envMap.is_a?(OpenGLRenderTargetCube) ? 1 : - 1
|
39
|
-
end
|
40
|
-
|
41
|
-
def refresh_other_uniforms(uniforms)
|
42
|
-
uniforms['opacity'].value = opacity
|
43
|
-
uniforms['diffuse'].value = color
|
44
|
-
|
45
|
-
uniforms['reflectivity'].value = reflectivity
|
46
|
-
uniforms['refractionRatio'].value = refraction_ratio
|
47
|
-
end
|
48
|
-
|
49
|
-
def get_uv_scale_map
|
50
|
-
map ||
|
51
|
-
specular_map ||
|
52
|
-
normal_map ||
|
53
|
-
bump_map ||
|
54
|
-
alpha_map
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Mittsu
|
2
|
-
class PointCloudMaterial
|
3
|
-
def refresh_uniforms(uniforms)
|
4
|
-
uniforms['psColor'].value = color
|
5
|
-
uniforms['opacity'].value = opacity
|
6
|
-
uniforms['size'].value = size
|
7
|
-
# uniforms['scale'].value = _canvas.height / 2.0 # TODO get window height?
|
8
|
-
|
9
|
-
uniforms['map'].value = map
|
10
|
-
|
11
|
-
if !map.nil?
|
12
|
-
offset = material.map.offset
|
13
|
-
repeat = material.map.repeat
|
14
|
-
|
15
|
-
uniforms['offsetRepeat'].value.set(offset.x, offset.y, repeat.x, repeat.y)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def init_shader
|
20
|
-
@shader = ShaderLib.create_shader(shader_id)
|
21
|
-
end
|
22
|
-
|
23
|
-
def shader_id
|
24
|
-
:particle_basic
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
module Mittsu
|
2
|
-
class Line
|
3
|
-
def render_buffer(camera, lights, fog, material, geometry_group, update_buffers)
|
4
|
-
opengl_mode = mode == LineStrip ? GL_LINE_STRIP : GL_LINES
|
5
|
-
|
6
|
-
@renderer.state.set_line_width(material.line_width * @renderer.pixel_ratio)
|
7
|
-
|
8
|
-
glDrawArrays(opengl_mode, 0, geometry_group.line_count)
|
9
|
-
|
10
|
-
@renderer.info[:render][:calls] += 1
|
11
|
-
end
|
12
|
-
|
13
|
-
def update
|
14
|
-
# TODO: glBindVertexArray ???
|
15
|
-
material = buffer_material(geometry)
|
16
|
-
custom_attributes_dirty = material.attributes && material.custom_attributes_dirty?
|
17
|
-
|
18
|
-
if geometry.vertices_need_update || geometry.colors_need_update || geometry.line_distances_need_update || custom_attributes_dirty
|
19
|
-
geometry.set_line_buffers(GL_DYNAMIC_DRAW)
|
20
|
-
end
|
21
|
-
|
22
|
-
geometry.vertices_need_update = false
|
23
|
-
geometry.colors_need_update = false
|
24
|
-
geometry.line_distances_need_update = false
|
25
|
-
|
26
|
-
material.attributes && material.clear_custom_attributes
|
27
|
-
end
|
28
|
-
|
29
|
-
def init_geometry
|
30
|
-
geometry.renderer = @renderer
|
31
|
-
if geometry.vertex_buffer.nil?
|
32
|
-
geometry.create_line_buffers
|
33
|
-
geometry.init_line_buffers(self)
|
34
|
-
|
35
|
-
geometry.vertices_need_update = true
|
36
|
-
geometry.colors_need_update = true
|
37
|
-
geometry.line_distances_need_update = true
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def add_opengl_object
|
42
|
-
@renderer.add_opengl_object(geometry, self)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
module Mittsu
|
2
|
-
class Mesh
|
3
|
-
attr_accessor :renderer
|
4
|
-
|
5
|
-
def render_buffer(camera, lights, fog, material, geometry_group, update_buffers)
|
6
|
-
type = GL_UNSIGNED_INT # geometry_group.type_array == Uint32Array ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT
|
7
|
-
|
8
|
-
# wireframe
|
9
|
-
if material.wireframe
|
10
|
-
@renderer.state.set_line_width(material.wireframe_linewidth * @renderer.pixel_ratio)
|
11
|
-
|
12
|
-
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, geometry_group.line_buffer) if update_buffers
|
13
|
-
glDrawElements(GL_LINES, geometry_group.line_count, type, 0)
|
14
|
-
|
15
|
-
# triangles
|
16
|
-
else
|
17
|
-
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, geometry_group.face_buffer) if update_buffers
|
18
|
-
glDrawElements(GL_TRIANGLES, geometry_group.face_count, type, 0)
|
19
|
-
end
|
20
|
-
|
21
|
-
@renderer.info[:render][:calls] += 1
|
22
|
-
@renderer.info[:render][:vertices] += geometry_group.face_count
|
23
|
-
@renderer.info[:render][:faces] += geometry_group.face_count / 3
|
24
|
-
end
|
25
|
-
|
26
|
-
def update
|
27
|
-
# check all geometry groubs
|
28
|
-
mat = nil
|
29
|
-
geometry.groups.each do |geometry_group|
|
30
|
-
# TODO: place to put this???
|
31
|
-
# glBindVertexArray(geometry_group.vertex_array_object)
|
32
|
-
mat = buffer_material(geometry_group)
|
33
|
-
|
34
|
-
custom_attributes_dirty = mat.attributes && mat.custom_attributes_dirty?
|
35
|
-
|
36
|
-
if geometry.vertices_need_update || geometry.morph_targets_need_update || geometry.elements_need_update || geometry.uvs_need_update || geometry.normals_need_update || geometry.colors_need_update || geometry.tangents_need_update || custom_attributes_dirty
|
37
|
-
geometry_group.set_mesh_buffers(self, GL_DYNAMIC_DRAW, !geometry.dynamic, mat)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
geometry.vertices_need_update = false
|
42
|
-
geometry.morph_targets_need_update = false
|
43
|
-
geometry.elements_need_update = false
|
44
|
-
geometry.uvs_need_update = false
|
45
|
-
geometry.normals_need_update = false
|
46
|
-
geometry.colors_need_update = false
|
47
|
-
geometry.tangents_need_update = false
|
48
|
-
|
49
|
-
mat.attributes && mat.clear_custom_attributes
|
50
|
-
end
|
51
|
-
|
52
|
-
def init_geometry
|
53
|
-
geometry.renderer = @renderer
|
54
|
-
geometry.init_geometry_groups(self)
|
55
|
-
end
|
56
|
-
|
57
|
-
def add_opengl_object
|
58
|
-
case geometry
|
59
|
-
when BufferGeometry
|
60
|
-
@renderer.add_opengl_object(geometry, self)
|
61
|
-
when Geometry
|
62
|
-
geometry.groups.each do |group|
|
63
|
-
@renderer.add_opengl_object(group, self)
|
64
|
-
end
|
65
|
-
else
|
66
|
-
raise "GEOMETRY IS NULL"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
module Mittsu
|
2
|
-
class PointCloud
|
3
|
-
def render_buffer(camera, lights, fog, material, geometry_group, update_buffers)
|
4
|
-
glDrawArrays(GL_POINTS, 0, geometry_group.particle_count)
|
5
|
-
|
6
|
-
@renderer.info[:render][:calls] += 1
|
7
|
-
@renderer.info[:render][:points] += geometry_group.particle_count
|
8
|
-
end
|
9
|
-
|
10
|
-
def update
|
11
|
-
material = buffer_material(geometry)
|
12
|
-
custom_attributes_dirty = material.attributes && material.custom_attributes_dirty?
|
13
|
-
|
14
|
-
if geometry.vertices_need_update || geometry.colors_need_update || custom_attributes_dirty
|
15
|
-
geometry.set_particle_buffers(GL_DYNAMIC_DRAW)
|
16
|
-
end
|
17
|
-
|
18
|
-
geometry.vertices_need_update = false
|
19
|
-
geometry.colors_need_update = false
|
20
|
-
|
21
|
-
material.attributes && material.clear_custom_attributes
|
22
|
-
end
|
23
|
-
|
24
|
-
def init_geometry
|
25
|
-
geometry.renderer = @renderer
|
26
|
-
if geometry.vertex_buffer.nil?
|
27
|
-
geometry.create_particle_buffers
|
28
|
-
geometry.init_particle_buffers(self)
|
29
|
-
|
30
|
-
geometry.vertices_need_update = true
|
31
|
-
geometry.colors_need_update = true
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def add_opengl_object
|
36
|
-
@renderer.add_opengl_object(geometry, self)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
require 'opengl'
|
2
|
-
|
3
|
-
ERROR_STRINGS = {
|
4
|
-
OpenGL::GL_NO_ERROR => 'NO_ERROR',
|
5
|
-
OpenGL::GL_INVALID_ENUM => 'INVALID_ENUM',
|
6
|
-
OpenGL::GL_INVALID_VALUE => 'INVALID_VALUE',
|
7
|
-
OpenGL::GL_INVALID_OPERATION => 'INVALID_OPERATION',
|
8
|
-
OpenGL::GL_STACK_OVERFLOW => 'STACK_OVERFLOW',
|
9
|
-
OpenGL::GL_STACK_UNDERFLOW => 'STACK_UNDERFLOW',
|
10
|
-
OpenGL::GL_OUT_OF_MEMORY => 'OUT_OF_MEMORY',
|
11
|
-
# OpenGL::GL_TABLE_TOO_LARGE => 'TABLE_TOO_LARGE'
|
12
|
-
}
|
13
|
-
|
14
|
-
module OpenGLDebug
|
15
|
-
class DebugShader
|
16
|
-
def initialize(handle)
|
17
|
-
@handle = handle
|
18
|
-
@uniforms = {}
|
19
|
-
end
|
20
|
-
|
21
|
-
def set_uniform(handle, name)
|
22
|
-
@uniforms[handle] = name
|
23
|
-
end
|
24
|
-
|
25
|
-
def get_uniform_name(handle)
|
26
|
-
@uniforms[handle]
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
module OpenGLProxy
|
31
|
-
extend OpenGL
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.load_lib(*args)
|
35
|
-
OpenGL.load_lib(*args)
|
36
|
-
end
|
37
|
-
|
38
|
-
OpenGL.constants.each do |c|
|
39
|
-
const_set c, OpenGL.const_get(c)
|
40
|
-
end
|
41
|
-
|
42
|
-
def call_debug_method m, called_from = caller[0], *args
|
43
|
-
if m.to_s.start_with?('glUniform')
|
44
|
-
uniform_name = @@current_shader.get_uniform_name(args.first)
|
45
|
-
call = "#{m}('#{uniform_name}',#{args[1..-1].map { |s| s.to_s[0..20] }.join(', ')})"
|
46
|
-
else
|
47
|
-
call = "#{m}(#{args.map { |s| s.to_s[0..20] }.join(', ')})"
|
48
|
-
end
|
49
|
-
print call
|
50
|
-
r = OpenGLProxy.send(m, *args)
|
51
|
-
ret = r.nil? ? '' : " => #{r}"
|
52
|
-
puts "#{ret} (#{called_from})"
|
53
|
-
e = OpenGLProxy.glGetError
|
54
|
-
raise "ERROR: #{m} => #{ERROR_STRINGS[e]}" unless e == OpenGL::GL_NO_ERROR
|
55
|
-
r
|
56
|
-
end
|
57
|
-
|
58
|
-
OpenGL.instance_methods.each do |m|
|
59
|
-
define_method m do |*args|
|
60
|
-
self.call_debug_method(m, caller[0], *args)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def glCreateProgram
|
65
|
-
call_debug_method(:glCreateProgram, caller[0]).tap do |handle|
|
66
|
-
@@shaders ||= {}
|
67
|
-
@@shaders[handle] = DebugShader.new(handle)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def glUseProgram(handle)
|
72
|
-
@@current_shader = @@shaders[handle]
|
73
|
-
call_debug_method(:glUseProgram, caller[0], handle)
|
74
|
-
end
|
75
|
-
|
76
|
-
def glGetUniformLocation(program, name)
|
77
|
-
call_debug_method(:glGetUniformLocation, caller[0], program, name).tap do |handle|
|
78
|
-
@@shaders[program].set_uniform(handle, name)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
module Mittsu
|
2
|
-
class OpenGLDefaultTarget
|
3
|
-
attr_accessor :viewport_width, :viewport_height, :viewport_x, :viewport_y
|
4
|
-
alias :width :viewport_width
|
5
|
-
alias :height :viewport_height
|
6
|
-
|
7
|
-
def initialize renderer
|
8
|
-
@renderer = renderer
|
9
|
-
@viewport_width = 0
|
10
|
-
@viewport_height = 0
|
11
|
-
@viewport_x = 0
|
12
|
-
@viewport_y = 0
|
13
|
-
end
|
14
|
-
|
15
|
-
def framebuffer
|
16
|
-
0
|
17
|
-
end
|
18
|
-
|
19
|
-
def update_mipmap
|
20
|
-
# NOOP
|
21
|
-
end
|
22
|
-
|
23
|
-
def setup_buffers
|
24
|
-
# NOOP
|
25
|
-
end
|
26
|
-
|
27
|
-
def use
|
28
|
-
glBindFramebuffer(GL_FRAMEBUFFER, 0)
|
29
|
-
use_viewport
|
30
|
-
end
|
31
|
-
|
32
|
-
def use_viewport
|
33
|
-
glViewport(@viewport_x, @viewport_y, @viewport_width, @viewport_height)
|
34
|
-
end
|
35
|
-
|
36
|
-
def set_and_use_viewport(x, y, width, height)
|
37
|
-
set_viewport(x, y, width, height)
|
38
|
-
use_viewport
|
39
|
-
end
|
40
|
-
|
41
|
-
def set_viewport(x, y, width, height)
|
42
|
-
@viewport_x, @viewport_y = x, y
|
43
|
-
set_viewport_size(width, height)
|
44
|
-
end
|
45
|
-
|
46
|
-
def set_viewport_size(width, height)
|
47
|
-
@viewport_width, @viewport_height = width, height
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|