mittsu 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build-workflow.yml +5 -44
  3. data/Gemfile +0 -4
  4. data/README.md +16 -130
  5. data/bin/console +0 -4
  6. data/lib/mittsu/cameras/cube_camera.rb +1 -1
  7. data/lib/mittsu/core/geometry.rb +3 -3
  8. data/lib/mittsu/core/object_3d.rb +29 -47
  9. data/lib/mittsu/core/uniform.rb +23 -0
  10. data/lib/mittsu/core.rb +1 -0
  11. data/lib/mittsu/loaders/obj_loader.rb +11 -5
  12. data/lib/mittsu/loaders/stl_loader.rb +186 -0
  13. data/lib/mittsu/loaders.rb +1 -0
  14. data/lib/mittsu/math/box3.rb +4 -4
  15. data/lib/mittsu/objects/line.rb +1 -3
  16. data/lib/mittsu/objects/mesh.rb +9 -12
  17. data/lib/mittsu/objects/point_cloud.rb +3 -3
  18. data/lib/mittsu/textures/render_target.rb +93 -0
  19. data/lib/mittsu/textures/render_target_cube.rb +8 -0
  20. data/lib/mittsu/textures/texture.rb +1 -1
  21. data/lib/mittsu/textures.rb +2 -0
  22. data/lib/mittsu/version.rb +1 -1
  23. data/lib/mittsu.rb +0 -1
  24. data/mittsu.gemspec +8 -12
  25. metadata +33 -204
  26. data/install-glfw.ps1 +0 -13
  27. data/lib/mittsu/renderers/generic_lib.rb +0 -122
  28. data/lib/mittsu/renderers/glfw_lib.rb +0 -62
  29. data/lib/mittsu/renderers/glfw_window.rb +0 -233
  30. data/lib/mittsu/renderers/opengl/core/buffer_geometry.rb +0 -11
  31. data/lib/mittsu/renderers/opengl/core/geometry.rb +0 -346
  32. data/lib/mittsu/renderers/opengl/core/object_3d.rb +0 -134
  33. data/lib/mittsu/renderers/opengl/lights/ambient_light.rb +0 -26
  34. data/lib/mittsu/renderers/opengl/lights/directional_light.rb +0 -35
  35. data/lib/mittsu/renderers/opengl/lights/hemisphere_light.rb +0 -39
  36. data/lib/mittsu/renderers/opengl/lights/light.rb +0 -55
  37. data/lib/mittsu/renderers/opengl/lights/point_light.rb +0 -36
  38. data/lib/mittsu/renderers/opengl/lights/spot_light.rb +0 -47
  39. data/lib/mittsu/renderers/opengl/materials/line_basic_material.rb +0 -16
  40. data/lib/mittsu/renderers/opengl/materials/material.rb +0 -274
  41. data/lib/mittsu/renderers/opengl/materials/mesh_basic_material.rb +0 -21
  42. data/lib/mittsu/renderers/opengl/materials/mesh_lambert_material.rb +0 -33
  43. data/lib/mittsu/renderers/opengl/materials/mesh_phong_material.rb +0 -44
  44. data/lib/mittsu/renderers/opengl/materials/opengl_material_basics.rb +0 -57
  45. data/lib/mittsu/renderers/opengl/materials/point_cloud_material.rb +0 -27
  46. data/lib/mittsu/renderers/opengl/materials/shader_material.rb +0 -11
  47. data/lib/mittsu/renderers/opengl/objects/group.rb +0 -9
  48. data/lib/mittsu/renderers/opengl/objects/line.rb +0 -45
  49. data/lib/mittsu/renderers/opengl/objects/mesh.rb +0 -70
  50. data/lib/mittsu/renderers/opengl/objects/point_cloud.rb +0 -39
  51. data/lib/mittsu/renderers/opengl/objects/sprite.rb +0 -12
  52. data/lib/mittsu/renderers/opengl/opengl_buffer.rb +0 -13
  53. data/lib/mittsu/renderers/opengl/opengl_debug.rb +0 -81
  54. data/lib/mittsu/renderers/opengl/opengl_default_target.rb +0 -50
  55. data/lib/mittsu/renderers/opengl/opengl_geometry_group.rb +0 -758
  56. data/lib/mittsu/renderers/opengl/opengl_geometry_like.rb +0 -132
  57. data/lib/mittsu/renderers/opengl/opengl_helper.rb +0 -161
  58. data/lib/mittsu/renderers/opengl/opengl_implementations.rb +0 -37
  59. data/lib/mittsu/renderers/opengl/opengl_lib.rb +0 -19
  60. data/lib/mittsu/renderers/opengl/opengl_light_renderer.rb +0 -43
  61. data/lib/mittsu/renderers/opengl/opengl_mittsu_params.rb +0 -53
  62. data/lib/mittsu/renderers/opengl/opengl_program.rb +0 -250
  63. data/lib/mittsu/renderers/opengl/opengl_shader.rb +0 -58
  64. data/lib/mittsu/renderers/opengl/opengl_state.rb +0 -205
  65. data/lib/mittsu/renderers/opengl/plugins/shadow_map_plugin.rb +0 -417
  66. data/lib/mittsu/renderers/opengl/plugins/sprite_fragment.glsl +0 -38
  67. data/lib/mittsu/renderers/opengl/plugins/sprite_plugin.rb +0 -250
  68. data/lib/mittsu/renderers/opengl/plugins/sprite_vertex.glsl +0 -31
  69. data/lib/mittsu/renderers/opengl/scenes/scene.rb +0 -9
  70. data/lib/mittsu/renderers/opengl/textures/compressed_texture.rb +0 -20
  71. data/lib/mittsu/renderers/opengl/textures/cube_texture.rb +0 -77
  72. data/lib/mittsu/renderers/opengl/textures/data_texture.rb +0 -21
  73. data/lib/mittsu/renderers/opengl/textures/texture.rb +0 -107
  74. data/lib/mittsu/renderers/opengl_render_target.rb +0 -201
  75. data/lib/mittsu/renderers/opengl_renderer.rb +0 -1028
  76. data/lib/mittsu/renderers/shaders/rbsl_loader.rb +0 -166
  77. data/lib/mittsu/renderers/shaders/shader_chunk/alphamap_fragment.glsl +0 -5
  78. data/lib/mittsu/renderers/shaders/shader_chunk/alphamap_pars_fragment.glsl +0 -5
  79. data/lib/mittsu/renderers/shaders/shader_chunk/alphatest_fragment.glsl +0 -5
  80. data/lib/mittsu/renderers/shaders/shader_chunk/bumpmap_pars_fragment.glsl +0 -40
  81. data/lib/mittsu/renderers/shaders/shader_chunk/color_fragment.glsl +0 -5
  82. data/lib/mittsu/renderers/shaders/shader_chunk/color_pars_fragment.glsl +0 -5
  83. data/lib/mittsu/renderers/shaders/shader_chunk/color_pars_vertex.glsl +0 -5
  84. data/lib/mittsu/renderers/shaders/shader_chunk/color_vertex.glsl +0 -5
  85. data/lib/mittsu/renderers/shaders/shader_chunk/common.glsl +0 -60
  86. data/lib/mittsu/renderers/shaders/shader_chunk/default_vertex.glsl +0 -15
  87. data/lib/mittsu/renderers/shaders/shader_chunk/defaultnormal_vertex.glsl +0 -21
  88. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_fragment.glsl +0 -62
  89. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_pars_fragment.glsl +0 -21
  90. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_pars_vertex.glsl +0 -7
  91. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_vertex.glsl +0 -17
  92. data/lib/mittsu/renderers/shaders/shader_chunk/fog_fragment.glsl +0 -26
  93. data/lib/mittsu/renderers/shaders/shader_chunk/fog_pars_fragment.glsl +0 -15
  94. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_fragment.glsl +0 -5
  95. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_pars_fragment.glsl +0 -6
  96. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_pars_vertex.glsl +0 -5
  97. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_vertex.glsl +0 -5
  98. data/lib/mittsu/renderers/shaders/shader_chunk/lights_lambert_pars_vertex.glsl +0 -43
  99. data/lib/mittsu/renderers/shaders/shader_chunk/lights_lambert_vertex.glsl +0 -196
  100. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_fragment.glsl +0 -243
  101. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_pars_fragment.glsl +0 -58
  102. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_pars_vertex.glsl +0 -5
  103. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_vertex.glsl +0 -5
  104. data/lib/mittsu/renderers/shaders/shader_chunk/linear_to_gamma_fragment.glsl +0 -2
  105. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_fragment.glsl +0 -5
  106. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_pars_fragment.glsl +0 -12
  107. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_pars_vertex.glsl +0 -11
  108. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_vertex.glsl +0 -15
  109. data/lib/mittsu/renderers/shaders/shader_chunk/map_fragment.glsl +0 -9
  110. data/lib/mittsu/renderers/shaders/shader_chunk/map_pars_fragment.glsl +0 -11
  111. data/lib/mittsu/renderers/shaders/shader_chunk/map_pars_vertex.glsl +0 -6
  112. data/lib/mittsu/renderers/shaders/shader_chunk/map_particle_fragment.glsl +0 -5
  113. data/lib/mittsu/renderers/shaders/shader_chunk/map_particle_pars_fragment.glsl +0 -6
  114. data/lib/mittsu/renderers/shaders/shader_chunk/map_vertex.glsl +0 -5
  115. data/lib/mittsu/renderers/shaders/shader_chunk/morphnormal_vertex.glsl +0 -12
  116. data/lib/mittsu/renderers/shaders/shader_chunk/morphtarget_pars_vertex.glsl +0 -13
  117. data/lib/mittsu/renderers/shaders/shader_chunk/morphtarget_vertex.glsl +0 -20
  118. data/lib/mittsu/renderers/shaders/shader_chunk/normalmap_pars_fragment.glsl +0 -27
  119. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_fragment.glsl +0 -216
  120. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_pars_fragment.glsl +0 -19
  121. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_pars_vertex.glsl +0 -6
  122. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_vertex.glsl +0 -9
  123. data/lib/mittsu/renderers/shaders/shader_chunk/skinbase_vertex.glsl +0 -8
  124. data/lib/mittsu/renderers/shaders/shader_chunk/skinning_pars_vertex.glsl +0 -47
  125. data/lib/mittsu/renderers/shaders/shader_chunk/skinning_vertex.glsl +0 -20
  126. data/lib/mittsu/renderers/shaders/shader_chunk/skinnormal_vertex.glsl +0 -20
  127. data/lib/mittsu/renderers/shaders/shader_chunk/specularmap_fragment.glsl +0 -12
  128. data/lib/mittsu/renderers/shaders/shader_chunk/specularmap_pars_fragment.glsl +0 -5
  129. data/lib/mittsu/renderers/shaders/shader_chunk/worldpos_vertex.glsl +0 -17
  130. data/lib/mittsu/renderers/shaders/shader_chunk.rb +0 -9
  131. data/lib/mittsu/renderers/shaders/shader_lib/basic/basic_fragment.rbsl +0 -37
  132. data/lib/mittsu/renderers/shaders/shader_lib/basic/basic_uniforms.rbslu +0 -3
  133. data/lib/mittsu/renderers/shaders/shader_lib/basic/basic_vertex.rbsl +0 -33
  134. data/lib/mittsu/renderers/shaders/shader_lib/cube/cube_fragment.rbsl +0 -12
  135. data/lib/mittsu/renderers/shaders/shader_lib/cube/cube_uniforms.rbslu +0 -2
  136. data/lib/mittsu/renderers/shaders/shader_lib/cube/cube_vertex.rbsl +0 -12
  137. data/lib/mittsu/renderers/shaders/shader_lib/depth_rgba/depth_rgba_fragment.rbsl +0 -26
  138. data/lib/mittsu/renderers/shaders/shader_lib/depth_rgba/depth_rgba_uniforms.rbslu +0 -0
  139. data/lib/mittsu/renderers/shaders/shader_lib/depth_rgba/depth_rgba_vertex.rbsl +0 -12
  140. data/lib/mittsu/renderers/shaders/shader_lib/lambert/lambert_fragment.rbsl +0 -56
  141. data/lib/mittsu/renderers/shaders/shader_lib/lambert/lambert_uniforms.rbslu +0 -7
  142. data/lib/mittsu/renderers/shaders/shader_lib/lambert/lambert_vertex.rbsl +0 -37
  143. data/lib/mittsu/renderers/shaders/shader_lib/particle_basic/particle_basic_fragment.rbsl +0 -27
  144. data/lib/mittsu/renderers/shaders/shader_lib/particle_basic/particle_basic_uniforms.rbslu +0 -2
  145. data/lib/mittsu/renderers/shaders/shader_lib/particle_basic/particle_basic_vertex.rbsl +0 -25
  146. data/lib/mittsu/renderers/shaders/shader_lib/phong/phong_fragment.rbsl +0 -45
  147. data/lib/mittsu/renderers/shaders/shader_lib/phong/phong_uniforms.rbslu +0 -11
  148. data/lib/mittsu/renderers/shaders/shader_lib/phong/phong_vertex.rbsl +0 -43
  149. data/lib/mittsu/renderers/shaders/shader_lib.rb +0 -43
  150. data/lib/mittsu/renderers/shaders/shader_templates/fragment.glsl.erb +0 -105
  151. data/lib/mittsu/renderers/shaders/shader_templates/vertex.glsl.erb +0 -143
  152. data/lib/mittsu/renderers/shaders/uniforms_lib.rb +0 -106
  153. data/lib/mittsu/renderers/shaders/uniforms_utils.rb +0 -31
  154. data/lib/mittsu/renderers.rb +0 -1
@@ -1,166 +0,0 @@
1
- module Mittsu
2
- module RBSLLoader
3
- UNIFORM_RGX = /uniform\s+(\S+)\s+(\w+)(|\s+\=\s+(.+));/
4
- COLOR_RGX = /color\(([^\)]*)\)/
5
-
6
- class << self
7
- def load_shader(shader, chunks)
8
- shader.lines.flat_map(&:chomp).map{ |line|
9
- if line =~ /(\s*)#include\s+(\w+)/
10
- indentation = $1
11
- chunk_name = $2.to_sym
12
-
13
- chunks[chunk_name].lines.map(&:chomp).map{ |l|
14
- "#{indentation}#{l}"
15
- }
16
- else
17
- line
18
- end
19
- }.join("\n") + "\n"
20
- end
21
-
22
- def extract_array_contents(str)
23
- /\[([^\]]+)\]/.match(str)[1]
24
- end
25
-
26
- def parse_int(str)
27
- str.to_i
28
- end
29
-
30
- (2..4).each do |n|
31
- define_method("parse_ivec#{n}") do |str|
32
- str =~ /ivec#{n}\(([^\)]+)\)/
33
- $1.split(',').map(&:strip).map(&:to_i).take(n)
34
- end
35
- end
36
-
37
- def parse_float(str)
38
- str.to_f
39
- end
40
-
41
- def parse_single_color(values)
42
- if values.length == 1
43
- values = values.map(&:to_i)
44
- else
45
- values = values.map(&:to_f)
46
- end
47
- Color.new(*values)
48
- end
49
-
50
- def parse_color(str)
51
- str =~ COLOR_RGX
52
- values = $1.split(',').map(&:strip)
53
- parse_single_color(values)
54
- end
55
-
56
- def parse_color_array(str)
57
- str = extract_array_contents(str)
58
- str.scan(COLOR_RGX).map{ |m|
59
- values = m.first.split(',').map(&:strip)
60
- parse_single_color(values)
61
- }
62
- end
63
-
64
- def parse_int_array(str)
65
- str = extract_array_contents(str)
66
- str.split(',').map(&:strip).map(&:to_i)
67
- end
68
-
69
- def parse_float_array(str)
70
- str = extract_array_contents(str)
71
- str.split(',').map(&:strip).map(&:to_f)
72
- end
73
-
74
- [Vector2, Vector3, Vector4].each do |vectorClass|
75
- define_method("parse_vec#{vectorClass::DIMENSIONS}") do |str|
76
- str =~ /vec#{vectorClass::DIMENSIONS}\(([^\)]+)\)/
77
- values = $1.split(',').map(&:strip).map(&:to_f).take(vectorClass::DIMENSIONS)
78
- vectorClass.new(*values)
79
- end
80
- end
81
-
82
- (2..4).each do |n|
83
- define_method("parse_ivec#{n}_array") do |str|
84
- str = extract_array_contents(str)
85
- str.scan(/ivec#{n}\(([^\)]+)\)/).map{ |m| m.first.split(',').map(&:strip).map(&:to_i).take(n) }
86
- end
87
- end
88
-
89
- [Vector2, Vector3, Vector4].each do |vectorClass|
90
- define_method("parse_vec#{vectorClass::DIMENSIONS}_array") do |str|
91
- str = extract_array_contents(str)
92
- str.scan(/vec#{vectorClass::DIMENSIONS}\(([^\)]+)\)/).map{ |m|
93
- values = m.first.split(',').map(&:strip).map(&:to_f).take(vectorClass::DIMENSIONS)
94
- vectorClass.new(*values)
95
- }
96
- end
97
- end
98
-
99
- [Matrix3, Matrix4].each do |matrixClass|
100
- define_method("parse_mat#{matrixClass::DIMENSIONS}") do |str|
101
- str =~ /mat#{matrixClass::DIMENSIONS}\(([^\)]+)\)/
102
- values = $1.split(',').map(&:strip).map(&:to_f).take(matrixClass::DIMENSIONS * matrixClass::DIMENSIONS)
103
- matrixClass.new().tap { |mat| mat.set(*values) }
104
- end
105
- end
106
-
107
- [Matrix3, Matrix4].each do |matrixClass|
108
- define_method("parse_mat#{matrixClass::DIMENSIONS}_array") do |str|
109
- str = extract_array_contents(str)
110
- str.scan(/mat#{matrixClass::DIMENSIONS}\(([^\)]+)\)/).map{ |m|
111
- values = m.first.split(',').map(&:strip).map(&:to_f).take(matrixClass::DIMENSIONS * matrixClass::DIMENSIONS)
112
- matrixClass.new().tap { |mat| mat.set(*values) }
113
- }
114
- end
115
- end
116
-
117
- def parse_texture(_str)
118
- nil
119
- end
120
-
121
- def parse_texture_array(_str)
122
- []
123
- end
124
-
125
- def parse_uniform(uniform)
126
- uniform =~ UNIFORM_RGX
127
- type_str = $1
128
- type = type_str.to_sym
129
- is_array = type_str.end_with?('[]')
130
- name = $2
131
- value_str = $4
132
- value = is_array ? [] : nil
133
- if value_str && !value_str.empty?
134
- value = send("parse_#{type.to_s.gsub(/\[\]/, '_array')}".to_s, value_str)
135
- end
136
- [name, Uniform.new(type, value)]
137
- end
138
-
139
- def load_uniforms(uniforms, uniforms_lib)
140
- uniform_strings = nil;
141
- in_uniform = false
142
-
143
- uniforms.lines.map(&:strip).each_with_object({}) { |line, hash|
144
- if in_uniform
145
- uniform_strings << line
146
- if line.end_with?(';')
147
- in_uniform = false
148
- name, value = parse_uniform(uniform_strings.join(' '))
149
- hash[name] = value
150
- end
151
- elsif line =~ /#include\s+(\w+)/
152
- uniforms_lib[$1.to_sym].map { |(k, v)| hash[k] = v.clone }
153
- elsif line.start_with?('uniform')
154
- if line.end_with?(';')
155
- name, value = parse_uniform(line)
156
- hash[name] = value
157
- else
158
- in_uniform = true
159
- uniform_strings = [line]
160
- end
161
- end
162
- }
163
- end
164
- end
165
- end
166
- end
@@ -1,5 +0,0 @@
1
- #ifdef USE_ALPHAMAP
2
-
3
- diffuseColor.a *= texture( alphaMap, vUv ).g;
4
-
5
- #endif
@@ -1,5 +0,0 @@
1
- #ifdef USE_ALPHAMAP
2
-
3
- uniform sampler2D alphaMap;
4
-
5
- #endif
@@ -1,5 +0,0 @@
1
- #ifdef ALPHATEST
2
-
3
- if ( diffuseColor.a < ALPHATEST ) discard;
4
-
5
- #endif
@@ -1,40 +0,0 @@
1
- #ifdef USE_BUMPMAP
2
-
3
- uniform sampler2D bumpMap;
4
- uniform float bumpScale;
5
-
6
- // Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen
7
- // http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html
8
-
9
- // Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)
10
-
11
- vec2 dHdxy_fwd() {
12
-
13
- vec2 dSTdx = dFdx( vUv );
14
- vec2 dSTdy = dFdy( vUv );
15
-
16
- float Hll = bumpScale * texture( bumpMap, vUv ).x;
17
- float dBx = bumpScale * texture( bumpMap, vUv + dSTdx ).x - Hll;
18
- float dBy = bumpScale * texture( bumpMap, vUv + dSTdy ).x - Hll;
19
-
20
- return vec2( dBx, dBy );
21
-
22
- }
23
-
24
- vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {
25
-
26
- vec3 vSigmaX = dFdx( surf_pos );
27
- vec3 vSigmaY = dFdy( surf_pos );
28
- vec3 vN = surf_norm; // normalized
29
-
30
- vec3 R1 = cross( vSigmaY, vN );
31
- vec3 R2 = cross( vN, vSigmaX );
32
-
33
- float fDet = dot( vSigmaX, R1 );
34
-
35
- vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
36
- return normalize( abs( fDet ) * surf_norm - vGrad );
37
-
38
- }
39
-
40
- #endif
@@ -1,5 +0,0 @@
1
- #ifdef USE_COLOR
2
-
3
- diffuseColor.rgb *= vColor;
4
-
5
- #endif
@@ -1,5 +0,0 @@
1
- #ifdef USE_COLOR
2
-
3
- in vec3 vColor;
4
-
5
- #endif
@@ -1,5 +0,0 @@
1
- #ifdef USE_COLOR
2
-
3
- out vec3 vColor;
4
-
5
- #endif
@@ -1,5 +0,0 @@
1
- #ifdef USE_COLOR
2
-
3
- vColor.xyz = inputToLinear( color.xyz );
4
-
5
- #endif
@@ -1,60 +0,0 @@
1
- #define PI 3.14159
2
- #define PI2 6.28318
3
- #define RECIPROCAL_PI2 0.15915494
4
- #define LOG2 1.442695
5
- #define EPSILON 1e-6
6
-
7
- float square( in float a ) { return a*a; }
8
- vec2 square( in vec2 a ) { return vec2( a.x*a.x, a.y*a.y ); }
9
- vec3 square( in vec3 a ) { return vec3( a.x*a.x, a.y*a.y, a.z*a.z ); }
10
- vec4 square( in vec4 a ) { return vec4( a.x*a.x, a.y*a.y, a.z*a.z, a.w*a.w ); }
11
- float saturate( in float a ) { return clamp( a, 0.0, 1.0 ); }
12
- vec2 saturate( in vec2 a ) { return clamp( a, 0.0, 1.0 ); }
13
- vec3 saturate( in vec3 a ) { return clamp( a, 0.0, 1.0 ); }
14
- vec4 saturate( in vec4 a ) { return clamp( a, 0.0, 1.0 ); }
15
- float average( in float a ) { return a; }
16
- float average( in vec2 a ) { return ( a.x + a.y) * 0.5; }
17
- float average( in vec3 a ) { return ( a.x + a.y + a.z) / 3.0; }
18
- float average( in vec4 a ) { return ( a.x + a.y + a.z + a.w) * 0.25; }
19
- float whiteCompliment( in float a ) { return saturate( 1.0 - a ); }
20
- vec2 whiteCompliment( in vec2 a ) { return saturate( vec2(1.0) - a ); }
21
- vec3 whiteCompliment( in vec3 a ) { return saturate( vec3(1.0) - a ); }
22
- vec4 whiteCompliment( in vec4 a ) { return saturate( vec4(1.0) - a ); }
23
- vec3 transformDirection( in vec3 normal, in mat4 matrix ) {
24
- return normalize( ( matrix * vec4( normal, 0.0 ) ).xyz );
25
- }
26
- // http://en.wikibooks.org/wiki/GLSL_Programming/Applying_Matrix_Transformations
27
- vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {
28
- return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );
29
- }
30
- vec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal) {
31
- float distance = dot( planeNormal, point-pointOnPlane );
32
- return point - distance * planeNormal;
33
- }
34
- float sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {
35
- return sign( dot( point - pointOnPlane, planeNormal ) );
36
- }
37
- vec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {
38
- return pointOnLine + lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) );
39
- }
40
- float calcLightAttenuation( float lightDistance, float cutoffDistance, float decayExponent ) {
41
- if ( decayExponent > 0.0 ) {
42
- return pow( saturate( 1.0 - lightDistance / cutoffDistance ), decayExponent );
43
- }
44
- return 1.0;
45
- }
46
-
47
- vec3 inputToLinear( in vec3 a ) {
48
- #ifdef GAMMA_INPUT
49
- return pow( a, vec3( float( GAMMA_FACTOR ) ) );
50
- #else
51
- return a;
52
- #endif
53
- }
54
- vec3 linearToOutput( in vec3 a ) {
55
- #ifdef GAMMA_OUTPUT
56
- return pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );
57
- #else
58
- return a;
59
- #endif
60
- }
@@ -1,15 +0,0 @@
1
- #ifdef USE_SKINNING
2
-
3
- vec4 mvPosition = modelViewMatrix * skinned;
4
-
5
- #elif defined( USE_MORPHTARGETS )
6
-
7
- vec4 mvPosition = modelViewMatrix * vec4( morphed, 1.0 );
8
-
9
- #else
10
-
11
- vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
12
-
13
- #endif
14
-
15
- gl_Position = projectionMatrix * mvPosition;
@@ -1,21 +0,0 @@
1
- #ifdef USE_SKINNING
2
-
3
- vec3 objectNormal = skinnedNormal.xyz;
4
-
5
- #elif defined( USE_MORPHNORMALS )
6
-
7
- vec3 objectNormal = morphedNormal;
8
-
9
- #else
10
-
11
- vec3 objectNormal = normal;
12
-
13
- #endif
14
-
15
- #ifdef FLIP_SIDED
16
-
17
- objectNormal = -objectNormal;
18
-
19
- #endif
20
-
21
- vec3 transformedNormal = normalMatrix * objectNormal;
@@ -1,62 +0,0 @@
1
- #ifdef USE_ENVMAP
2
-
3
- #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )
4
-
5
- vec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );
6
-
7
- // Transforming Normal Vectors with the Inverse Transformation
8
- vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
9
-
10
- #ifdef ENVMAP_MODE_REFLECTION
11
-
12
- vec3 reflectVec = reflect( cameraToVertex, worldNormal );
13
-
14
- #else
15
-
16
- vec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );
17
-
18
- #endif
19
-
20
- #else
21
-
22
- vec3 reflectVec = vReflect;
23
-
24
- #endif
25
-
26
- #ifdef DOUBLE_SIDED
27
- float flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );
28
- #else
29
- float flipNormal = 1.0;
30
- #endif
31
-
32
- #ifdef ENVMAP_TYPE_CUBE
33
- vec4 envColor = texture( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
34
-
35
- #elif defined( ENVMAP_TYPE_EQUIREC )
36
- vec2 sampleUV;
37
- sampleUV.y = saturate( flipNormal * reflectVec.y * 0.5 + 0.5 );
38
- sampleUV.x = atan( flipNormal * reflectVec.z, flipNormal * reflectVec.x ) * RECIPROCAL_PI2 + 0.5;
39
- vec4 envColor = texture( envMap, sampleUV );
40
-
41
- #elif defined( ENVMAP_TYPE_SPHERE )
42
- vec3 reflectView = flipNormal * normalize((viewMatrix * vec4( reflectVec, 0.0 )).xyz + vec3(0.0,0.0,1.0));
43
- vec4 envColor = texture( envMap, reflectView.xy * 0.5 + 0.5 );
44
- #endif
45
-
46
- envColor.xyz = inputToLinear( envColor.xyz );
47
-
48
- #ifdef ENVMAP_BLENDING_MULTIPLY
49
-
50
- outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );
51
-
52
- #elif defined( ENVMAP_BLENDING_MIX )
53
-
54
- outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );
55
-
56
- #elif defined( ENVMAP_BLENDING_ADD )
57
-
58
- outgoingLight += envColor.xyz * specularStrength * reflectivity;
59
-
60
- #endif
61
-
62
- #endif
@@ -1,21 +0,0 @@
1
- #ifdef USE_ENVMAP
2
-
3
- uniform float reflectivity;
4
- #ifdef ENVMAP_TYPE_CUBE
5
- uniform samplerCube envMap;
6
- #else
7
- uniform sampler2D envMap;
8
- #endif
9
- uniform float flipEnvMap;
10
-
11
- #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )
12
-
13
- uniform float refractionRatio;
14
-
15
- #else
16
-
17
- in vec3 vReflect;
18
-
19
- #endif
20
-
21
- #endif
@@ -1,7 +0,0 @@
1
- #if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )
2
-
3
- out vec3 vReflect;
4
-
5
- uniform float refractionRatio;
6
-
7
- #endif
@@ -1,17 +0,0 @@
1
- #if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )
2
-
3
- vec3 worldNormal = transformDirection( objectNormal, modelMatrix );
4
-
5
- vec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );
6
-
7
- #ifdef ENVMAP_MODE_REFLECTION
8
-
9
- vReflect = reflect( cameraToVertex, worldNormal );
10
-
11
- #else
12
-
13
- vReflect = refract( cameraToVertex, worldNormal, refractionRatio );
14
-
15
- #endif
16
-
17
- #endif
@@ -1,26 +0,0 @@
1
- #ifdef USE_FOG
2
-
3
- #ifdef USE_LOGDEPTHBUF_EXT
4
-
5
- float depth = gl_FragDepthEXT / gl_FragCoord.w;
6
-
7
- #else
8
-
9
- float depth = gl_FragCoord.z / gl_FragCoord.w;
10
-
11
- #endif
12
-
13
- #ifdef FOG_EXP2
14
-
15
- float fogFactor = exp2( - square( fogDensity ) * square( depth ) * LOG2 );
16
- fogFactor = whiteCompliment( fogFactor );
17
-
18
- #else
19
-
20
- float fogFactor = smoothstep( fogNear, fogFar, depth );
21
-
22
- #endif
23
-
24
- outgoingLight = mix( outgoingLight, fogColor, fogFactor );
25
-
26
- #endif
@@ -1,15 +0,0 @@
1
- #ifdef USE_FOG
2
-
3
- uniform vec3 fogColor;
4
-
5
- #ifdef FOG_EXP2
6
-
7
- uniform float fogDensity;
8
-
9
- #else
10
-
11
- uniform float fogNear;
12
- uniform float fogFar;
13
- #endif
14
-
15
- #endif
@@ -1,5 +0,0 @@
1
- #ifdef USE_LIGHTMAP
2
-
3
- outgoingLight *= diffuseColor.xyz * texture( lightMap, vUv2 ).xyz;
4
-
5
- #endif
@@ -1,6 +0,0 @@
1
- #ifdef USE_LIGHTMAP
2
-
3
- in vec2 vUv2;
4
- uniform sampler2D lightMap;
5
-
6
- #endif
@@ -1,5 +0,0 @@
1
- #ifdef USE_LIGHTMAP
2
-
3
- out vec2 vUv2;
4
-
5
- #endif
@@ -1,5 +0,0 @@
1
- #ifdef USE_LIGHTMAP
2
-
3
- vUv2 = uv2;
4
-
5
- #endif
@@ -1,43 +0,0 @@
1
- uniform vec3 ambientLightColor;
2
-
3
- #if MAX_DIR_LIGHTS > 0
4
-
5
- uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];
6
- uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];
7
-
8
- #endif
9
-
10
- #if MAX_HEMI_LIGHTS > 0
11
-
12
- uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];
13
- uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];
14
- uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];
15
-
16
- #endif
17
-
18
- #if MAX_POINT_LIGHTS > 0
19
-
20
- uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];
21
- uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];
22
- uniform float pointLightDistance[ MAX_POINT_LIGHTS ];
23
- uniform float pointLightDecay[ MAX_POINT_LIGHTS ];
24
-
25
- #endif
26
-
27
- #if MAX_SPOT_LIGHTS > 0
28
-
29
- uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];
30
- uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];
31
- uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];
32
- uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];
33
- uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];
34
- uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];
35
- uniform float spotLightDecay[ MAX_SPOT_LIGHTS ];
36
-
37
- #endif
38
-
39
- #ifdef WRAP_AROUND
40
-
41
- uniform vec3 wrapRGB;
42
-
43
- #endif