@luma.gl/shadertools 8.5.15 → 8.5.16

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 (174) hide show
  1. package/dist/dist.js +25 -25
  2. package/dist/dist.min.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/index.js +10 -10
  5. package/dist/es5/index.js.map +1 -1
  6. package/dist/es5/lib/assemble-shaders.js +6 -2
  7. package/dist/es5/lib/assemble-shaders.js.map +1 -1
  8. package/dist/es5/lib/constants.js +1 -1
  9. package/dist/es5/lib/constants.js.map +1 -1
  10. package/dist/es5/lib/filters/prop-types.js.map +1 -1
  11. package/dist/es5/lib/inject-shader.js +2 -2
  12. package/dist/es5/lib/inject-shader.js.map +1 -1
  13. package/dist/es5/lib/platform-defines.js.map +1 -1
  14. package/dist/es5/lib/resolve-modules.js +2 -2
  15. package/dist/es5/lib/resolve-modules.js.map +1 -1
  16. package/dist/es5/lib/shader-module.js +1 -1
  17. package/dist/es5/lib/shader-module.js.map +1 -1
  18. package/dist/es5/lib/transpile-shader.js +1 -1
  19. package/dist/es5/lib/transpile-shader.js.map +1 -1
  20. package/dist/es5/modules/dirlight/dirlight.js.map +1 -1
  21. package/dist/es5/modules/fp32/fp32.js.map +1 -1
  22. package/dist/es5/modules/fp64/fp64-arithmetic.glsl.js.map +1 -1
  23. package/dist/es5/modules/fp64/fp64-functions.glsl.js.map +1 -1
  24. package/dist/es5/modules/fp64/fp64-utils.js +1 -1
  25. package/dist/es5/modules/fp64/fp64-utils.js.map +1 -1
  26. package/dist/es5/modules/fp64/fp64.js +6 -5
  27. package/dist/es5/modules/fp64/fp64.js.map +1 -1
  28. package/dist/es5/modules/fxaa/fxaa.js.map +1 -1
  29. package/dist/es5/modules/geometry/geometry.js.map +1 -1
  30. package/dist/es5/modules/image-adjust-filters/brightnesscontrast.js.map +1 -1
  31. package/dist/es5/modules/image-adjust-filters/denoise.js.map +1 -1
  32. package/dist/es5/modules/image-adjust-filters/huesaturation.js.map +1 -1
  33. package/dist/es5/modules/image-adjust-filters/noise.js.map +1 -1
  34. package/dist/es5/modules/image-adjust-filters/sepia.js.map +1 -1
  35. package/dist/es5/modules/image-adjust-filters/vibrance.js.map +1 -1
  36. package/dist/es5/modules/image-adjust-filters/vignette.js.map +1 -1
  37. package/dist/es5/modules/image-blur-filters/tiltshift.js.map +1 -1
  38. package/dist/es5/modules/image-blur-filters/triangleblur.js.map +1 -1
  39. package/dist/es5/modules/image-blur-filters/zoomblur.js.map +1 -1
  40. package/dist/es5/modules/image-fun-filters/colorhalftone.js.map +1 -1
  41. package/dist/es5/modules/image-fun-filters/dotscreen.js.map +1 -1
  42. package/dist/es5/modules/image-fun-filters/edgework.js.map +1 -1
  43. package/dist/es5/modules/image-fun-filters/hexagonalpixelate.js.map +1 -1
  44. package/dist/es5/modules/image-fun-filters/ink.js.map +1 -1
  45. package/dist/es5/modules/image-fun-filters/magnify.js.map +1 -1
  46. package/dist/es5/modules/image-warp-filters/bulgepinch.js.map +1 -1
  47. package/dist/es5/modules/image-warp-filters/swirl.js.map +1 -1
  48. package/dist/es5/modules/image-warp-filters/warp.js.map +1 -1
  49. package/dist/es5/modules/index.js +62 -62
  50. package/dist/es5/modules/index.js.map +1 -1
  51. package/dist/es5/modules/lights/lights.glsl.js.map +1 -1
  52. package/dist/es5/modules/lights/lights.js +1 -1
  53. package/dist/es5/modules/lights/lights.js.map +1 -1
  54. package/dist/es5/modules/module-injectors.js +1 -1
  55. package/dist/es5/modules/module-injectors.js.map +1 -1
  56. package/dist/es5/modules/pbr/pbr-fragment.glsl.js.map +1 -1
  57. package/dist/es5/modules/pbr/pbr-vertex.glsl.js.map +1 -1
  58. package/dist/es5/modules/pbr/pbr.js.map +1 -1
  59. package/dist/es5/modules/phong-lighting/phong-lighting.glsl.js.map +1 -1
  60. package/dist/es5/modules/phong-lighting/phong-lighting.js.map +1 -1
  61. package/dist/es5/modules/picking/picking.js.map +1 -1
  62. package/dist/es5/modules/project/project.js.map +1 -1
  63. package/dist/es5/modules/transform/transform.js.map +1 -1
  64. package/dist/es5/modules/utils/random.js.map +1 -1
  65. package/dist/es5/utils/assert.js.map +1 -1
  66. package/dist/es5/utils/index.js.map +1 -1
  67. package/dist/es5/utils/is-old-ie.js.map +1 -1
  68. package/dist/es5/utils/shader-utils.js +3 -3
  69. package/dist/es5/utils/shader-utils.js.map +1 -1
  70. package/dist/es5/utils/webgl-info.js +2 -2
  71. package/dist/es5/utils/webgl-info.js.map +1 -1
  72. package/dist/esm/bundle.js.map +1 -1
  73. package/dist/esm/index.js.map +1 -1
  74. package/dist/esm/lib/assemble-shaders.js +38 -51
  75. package/dist/esm/lib/assemble-shaders.js.map +1 -1
  76. package/dist/esm/lib/constants.js.map +1 -1
  77. package/dist/esm/lib/filters/prop-types.js.map +1 -1
  78. package/dist/esm/lib/inject-shader.js +4 -3
  79. package/dist/esm/lib/inject-shader.js.map +1 -1
  80. package/dist/esm/lib/platform-defines.js +9 -80
  81. package/dist/esm/lib/platform-defines.js.map +1 -1
  82. package/dist/esm/lib/resolve-modules.js +9 -7
  83. package/dist/esm/lib/resolve-modules.js.map +1 -1
  84. package/dist/esm/lib/shader-module.js +20 -23
  85. package/dist/esm/lib/shader-module.js.map +1 -1
  86. package/dist/esm/lib/transpile-shader.js +5 -5
  87. package/dist/esm/lib/transpile-shader.js.map +1 -1
  88. package/dist/esm/modules/dirlight/dirlight.js +3 -9
  89. package/dist/esm/modules/dirlight/dirlight.js.map +1 -1
  90. package/dist/esm/modules/fp32/fp32.js +1 -148
  91. package/dist/esm/modules/fp32/fp32.js.map +1 -1
  92. package/dist/esm/modules/fp64/fp64-arithmetic.glsl.js +1 -143
  93. package/dist/esm/modules/fp64/fp64-arithmetic.glsl.js.map +1 -1
  94. package/dist/esm/modules/fp64/fp64-functions.glsl.js +1 -630
  95. package/dist/esm/modules/fp64/fp64-functions.glsl.js.map +1 -1
  96. package/dist/esm/modules/fp64/fp64-utils.js +3 -1
  97. package/dist/esm/modules/fp64/fp64-utils.js.map +1 -1
  98. package/dist/esm/modules/fp64/fp64.js.map +1 -1
  99. package/dist/esm/modules/fxaa/fxaa.js +1 -535
  100. package/dist/esm/modules/fxaa/fxaa.js.map +1 -1
  101. package/dist/esm/modules/geometry/geometry.js +2 -28
  102. package/dist/esm/modules/geometry/geometry.js.map +1 -1
  103. package/dist/esm/modules/image-adjust-filters/brightnesscontrast.js +1 -18
  104. package/dist/esm/modules/image-adjust-filters/brightnesscontrast.js.map +1 -1
  105. package/dist/esm/modules/image-adjust-filters/denoise.js +1 -22
  106. package/dist/esm/modules/image-adjust-filters/denoise.js.map +1 -1
  107. package/dist/esm/modules/image-adjust-filters/huesaturation.js +1 -28
  108. package/dist/esm/modules/image-adjust-filters/huesaturation.js.map +1 -1
  109. package/dist/esm/modules/image-adjust-filters/noise.js +1 -19
  110. package/dist/esm/modules/image-adjust-filters/noise.js.map +1 -1
  111. package/dist/esm/modules/image-adjust-filters/sepia.js +1 -20
  112. package/dist/esm/modules/image-adjust-filters/sepia.js.map +1 -1
  113. package/dist/esm/modules/image-adjust-filters/vibrance.js +1 -15
  114. package/dist/esm/modules/image-adjust-filters/vibrance.js.map +1 -1
  115. package/dist/esm/modules/image-adjust-filters/vignette.js +1 -14
  116. package/dist/esm/modules/image-adjust-filters/vignette.js.map +1 -1
  117. package/dist/esm/modules/image-blur-filters/tiltshift.js +1 -37
  118. package/dist/esm/modules/image-blur-filters/tiltshift.js.map +1 -1
  119. package/dist/esm/modules/image-blur-filters/triangleblur.js +1 -27
  120. package/dist/esm/modules/image-blur-filters/triangleblur.js.map +1 -1
  121. package/dist/esm/modules/image-blur-filters/zoomblur.js +1 -26
  122. package/dist/esm/modules/image-blur-filters/zoomblur.js.map +1 -1
  123. package/dist/esm/modules/image-fun-filters/colorhalftone.js +1 -34
  124. package/dist/esm/modules/image-fun-filters/colorhalftone.js.map +1 -1
  125. package/dist/esm/modules/image-fun-filters/dotscreen.js +1 -22
  126. package/dist/esm/modules/image-fun-filters/dotscreen.js.map +1 -1
  127. package/dist/esm/modules/image-fun-filters/edgework.js +1 -50
  128. package/dist/esm/modules/image-fun-filters/edgework.js.map +1 -1
  129. package/dist/esm/modules/image-fun-filters/hexagonalpixelate.js +1 -42
  130. package/dist/esm/modules/image-fun-filters/hexagonalpixelate.js.map +1 -1
  131. package/dist/esm/modules/image-fun-filters/ink.js +1 -27
  132. package/dist/esm/modules/image-fun-filters/ink.js.map +1 -1
  133. package/dist/esm/modules/image-fun-filters/magnify.js +1 -20
  134. package/dist/esm/modules/image-fun-filters/magnify.js.map +1 -1
  135. package/dist/esm/modules/image-warp-filters/bulgepinch.js +1 -27
  136. package/dist/esm/modules/image-warp-filters/bulgepinch.js.map +1 -1
  137. package/dist/esm/modules/image-warp-filters/swirl.js +1 -29
  138. package/dist/esm/modules/image-warp-filters/swirl.js.map +1 -1
  139. package/dist/esm/modules/image-warp-filters/warp.js +1 -11
  140. package/dist/esm/modules/image-warp-filters/warp.js.map +1 -1
  141. package/dist/esm/modules/index.js.map +1 -1
  142. package/dist/esm/modules/lights/lights.glsl.js +1 -34
  143. package/dist/esm/modules/lights/lights.glsl.js.map +1 -1
  144. package/dist/esm/modules/lights/lights.js +19 -15
  145. package/dist/esm/modules/lights/lights.js.map +1 -1
  146. package/dist/esm/modules/module-injectors.js +2 -27
  147. package/dist/esm/modules/module-injectors.js.map +1 -1
  148. package/dist/esm/modules/pbr/pbr-fragment.glsl.js +1 -351
  149. package/dist/esm/modules/pbr/pbr-fragment.glsl.js.map +1 -1
  150. package/dist/esm/modules/pbr/pbr-vertex.glsl.js +1 -39
  151. package/dist/esm/modules/pbr/pbr-vertex.glsl.js.map +1 -1
  152. package/dist/esm/modules/pbr/pbr.js.map +1 -1
  153. package/dist/esm/modules/phong-lighting/phong-lighting.glsl.js +1 -75
  154. package/dist/esm/modules/phong-lighting/phong-lighting.glsl.js.map +1 -1
  155. package/dist/esm/modules/phong-lighting/phong-lighting.js +3 -1
  156. package/dist/esm/modules/phong-lighting/phong-lighting.js.map +1 -1
  157. package/dist/esm/modules/picking/picking.js +4 -87
  158. package/dist/esm/modules/picking/picking.js.map +1 -1
  159. package/dist/esm/modules/project/project.js +6 -69
  160. package/dist/esm/modules/project/project.js.map +1 -1
  161. package/dist/esm/modules/transform/transform.js +1 -28
  162. package/dist/esm/modules/transform/transform.js.map +1 -1
  163. package/dist/esm/modules/utils/random.js +1 -5
  164. package/dist/esm/modules/utils/random.js.map +1 -1
  165. package/dist/esm/utils/assert.js.map +1 -1
  166. package/dist/esm/utils/index.js.map +1 -1
  167. package/dist/esm/utils/is-old-ie.js +2 -1
  168. package/dist/esm/utils/is-old-ie.js.map +1 -1
  169. package/dist/esm/utils/shader-utils.js +11 -24
  170. package/dist/esm/utils/shader-utils.js.map +1 -1
  171. package/dist/esm/utils/webgl-info.js +3 -2
  172. package/dist/esm/utils/webgl-info.js.map +1 -1
  173. package/package.json +2 -2
  174. package/src/.DS_Store +0 -0
@@ -1,76 +1,2 @@
1
- export default `\
2
-
3
- uniform float lighting_uAmbient;
4
- uniform float lighting_uDiffuse;
5
- uniform float lighting_uShininess;
6
- uniform vec3 lighting_uSpecularColor;
7
-
8
- vec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {
9
- vec3 halfway_direction = normalize(light_direction + view_direction);
10
- float lambertian = dot(light_direction, normal_worldspace);
11
- float specular = 0.0;
12
- if (lambertian > 0.0) {
13
- float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);
14
- specular = pow(specular_angle, lighting_uShininess);
15
- }
16
- lambertian = max(lambertian, 0.0);
17
- return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;
18
- }
19
-
20
- vec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {
21
- vec3 lightColor = surfaceColor;
22
-
23
- if (lighting_uEnabled) {
24
- vec3 view_direction = normalize(cameraPosition - position_worldspace);
25
- lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;
26
-
27
- for (int i = 0; i < MAX_LIGHTS; i++) {
28
- if (i >= lighting_uPointLightCount) {
29
- break;
30
- }
31
- PointLight pointLight = lighting_uPointLight[i];
32
- vec3 light_position_worldspace = pointLight.position;
33
- vec3 light_direction = normalize(light_position_worldspace - position_worldspace);
34
- lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);
35
- }
36
-
37
- for (int i = 0; i < MAX_LIGHTS; i++) {
38
- if (i >= lighting_uDirectionalLightCount) {
39
- break;
40
- }
41
- DirectionalLight directionalLight = lighting_uDirectionalLight[i];
42
- lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);
43
- }
44
- }
45
- return lightColor;
46
- }
47
-
48
- vec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {
49
- vec3 lightColor = vec3(0, 0, 0);
50
- vec3 surfaceColor = vec3(0, 0, 0);
51
-
52
- if (lighting_uEnabled) {
53
- vec3 view_direction = normalize(cameraPosition - position_worldspace);
54
-
55
- for (int i = 0; i < MAX_LIGHTS; i++) {
56
- if (i >= lighting_uPointLightCount) {
57
- break;
58
- }
59
- PointLight pointLight = lighting_uPointLight[i];
60
- vec3 light_position_worldspace = pointLight.position;
61
- vec3 light_direction = normalize(light_position_worldspace - position_worldspace);
62
- lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);
63
- }
64
-
65
- for (int i = 0; i < MAX_LIGHTS; i++) {
66
- if (i >= lighting_uDirectionalLightCount) {
67
- break;
68
- }
69
- DirectionalLight directionalLight = lighting_uDirectionalLight[i];
70
- lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);
71
- }
72
- }
73
- return lightColor;
74
- }
75
- `;
1
+ export default "\nuniform float lighting_uAmbient;\nuniform float lighting_uDiffuse;\nuniform float lighting_uShininess;\nuniform vec3 lighting_uSpecularColor;\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\n vec3 halfway_direction = normalize(light_direction + view_direction);\n float lambertian = dot(light_direction, normal_worldspace);\n float specular = 0.0;\n if (lambertian > 0.0) {\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\n specular = pow(specular_angle, lighting_uShininess);\n }\n lambertian = max(lambertian, 0.0);\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\n}\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = surfaceColor;\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = vec3(0, 0, 0);\n vec3 surfaceColor = vec3(0, 0, 0);\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n";
76
2
  //# sourceMappingURL=phong-lighting.glsl.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/phong-lighting/phong-lighting.glsl.js"],"names":[],"mappings":"AAAA,eAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CA1EA","sourcesContent":["export default `\\\n\nuniform float lighting_uAmbient;\nuniform float lighting_uDiffuse;\nuniform float lighting_uShininess;\nuniform vec3 lighting_uSpecularColor;\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\n vec3 halfway_direction = normalize(light_direction + view_direction);\n float lambertian = dot(light_direction, normal_worldspace);\n float specular = 0.0;\n if (lambertian > 0.0) {\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\n specular = pow(specular_angle, lighting_uShininess);\n }\n lambertian = max(lambertian, 0.0);\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\n}\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = surfaceColor;\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = vec3(0, 0, 0);\n vec3 surfaceColor = vec3(0, 0, 0);\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n`;\n"],"file":"phong-lighting.glsl.js"}
1
+ {"version":3,"file":"phong-lighting.glsl.js","names":[],"sources":["../../../../src/modules/phong-lighting/phong-lighting.glsl.js"],"sourcesContent":["export default `\\\n\nuniform float lighting_uAmbient;\nuniform float lighting_uDiffuse;\nuniform float lighting_uShininess;\nuniform vec3 lighting_uSpecularColor;\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) {\n vec3 halfway_direction = normalize(light_direction + view_direction);\n float lambertian = dot(light_direction, normal_worldspace);\n float specular = 0.0;\n if (lambertian > 0.0) {\n float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);\n specular = pow(specular_angle, lighting_uShininess);\n }\n lambertian = max(lambertian, 0.0);\n return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color;\n}\n\nvec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = surfaceColor;\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color;\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n\nvec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {\n vec3 lightColor = vec3(0, 0, 0);\n vec3 surfaceColor = vec3(0, 0, 0);\n\n if (lighting_uEnabled) {\n vec3 view_direction = normalize(cameraPosition - position_worldspace);\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uPointLightCount) {\n break;\n }\n PointLight pointLight = lighting_uPointLight[i];\n vec3 light_position_worldspace = pointLight.position;\n vec3 light_direction = normalize(light_position_worldspace - position_worldspace);\n lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);\n }\n\n for (int i = 0; i < MAX_LIGHTS; i++) {\n if (i >= lighting_uDirectionalLightCount) {\n break;\n }\n DirectionalLight directionalLight = lighting_uDirectionalLight[i];\n lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);\n }\n }\n return lightColor;\n}\n`;\n"],"mappings":"AAAA"}
@@ -17,7 +17,9 @@ function getMaterialUniforms(material) {
17
17
  };
18
18
  }
19
19
 
20
- function getUniforms(opts = INITIAL_MODULE_OPTIONS) {
20
+ function getUniforms() {
21
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_MODULE_OPTIONS;
22
+
21
23
  if (!('material' in opts)) {
22
24
  return {};
23
25
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/phong-lighting/phong-lighting.js"],"names":["lights","lightingShader","INITIAL_MODULE_OPTIONS","getMaterialUniforms","material","ambient","diffuse","shininess","specularColor","lighting_uAmbient","lighting_uDiffuse","lighting_uShininess","lighting_uSpecularColor","map","x","getUniforms","opts","lighting_uEnabled","gouraudLighting","name","dependencies","vs","defines","LIGHTING_VERTEX","phongLighting","fs","LIGHTING_FRAGMENT"],"mappings":"AAEA,SAAQA,MAAR,QAAqB,kBAArB;AACA,OAAOC,cAAP,MAA2B,uBAA3B;AAEA,MAAMC,sBAAsB,GAAG,EAA/B;;AAEA,SAASC,mBAAT,CAA6BC,QAA7B,EAAuC;AACrC,QAAM;AAACC,IAAAA,OAAO,GAAG,IAAX;AAAiBC,IAAAA,OAAO,GAAG,GAA3B;AAAgCC,IAAAA,SAAS,GAAG,EAA5C;AAAgDC,IAAAA,aAAa,GAAG,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT;AAAhE,MAAgFJ,QAAtF;AAEA,SAAO;AACLK,IAAAA,iBAAiB,EAAEJ,OADd;AAELK,IAAAA,iBAAiB,EAAEJ,OAFd;AAGLK,IAAAA,mBAAmB,EAAEJ,SAHhB;AAILK,IAAAA,uBAAuB,EAAEJ,aAAa,CAACK,GAAd,CAAkBC,CAAC,IAAIA,CAAC,GAAG,GAA3B;AAJpB,GAAP;AAMD;;AAED,SAASC,WAAT,CAAqBC,IAAI,GAAGd,sBAA5B,EAAoD;AAClD,MAAI,EAAE,cAAcc,IAAhB,CAAJ,EAA2B;AACzB,WAAO,EAAP;AACD;;AAED,QAAM;AAACZ,IAAAA;AAAD,MAAaY,IAAnB;;AAEA,MAAI,CAACZ,QAAL,EAAe;AACb,WAAO;AAACa,MAAAA,iBAAiB,EAAE;AAApB,KAAP;AACD;;AAED,SAAOd,mBAAmB,CAACC,QAAD,CAA1B;AACD;;AAGD,OAAO,MAAMc,eAAe,GAAG;AAC7BC,EAAAA,IAAI,EAAE,kBADuB;AAE7BC,EAAAA,YAAY,EAAE,CAACpB,MAAD,CAFe;AAG7BqB,EAAAA,EAAE,EAAEpB,cAHyB;AAI7BqB,EAAAA,OAAO,EAAE;AACPC,IAAAA,eAAe,EAAE;AADV,GAJoB;AAO7BR,EAAAA;AAP6B,CAAxB;AAWP,OAAO,MAAMS,aAAa,GAAG;AAC3BL,EAAAA,IAAI,EAAE,gBADqB;AAE3BC,EAAAA,YAAY,EAAE,CAACpB,MAAD,CAFa;AAG3ByB,EAAAA,EAAE,EAAExB,cAHuB;AAI3BqB,EAAAA,OAAO,EAAE;AACPI,IAAAA,iBAAiB,EAAE;AADZ,GAJkB;AAO3BX,EAAAA;AAP2B,CAAtB","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport {lights} from '../lights/lights';\nimport lightingShader from './phong-lighting.glsl';\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getMaterialUniforms(material) {\n const {ambient = 0.35, diffuse = 0.6, shininess = 32, specularColor = [30, 30, 30]} = material;\n\n return {\n lighting_uAmbient: ambient,\n lighting_uDiffuse: diffuse,\n lighting_uShininess: shininess,\n lighting_uSpecularColor: specularColor.map(x => x / 255)\n };\n}\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n if (!('material' in opts)) {\n return {};\n }\n\n const {material} = opts;\n\n if (!material) {\n return {lighting_uEnabled: false};\n }\n\n return getMaterialUniforms(material);\n}\n\n/** @type {ShaderModule} */\nexport const gouraudLighting = {\n name: 'gouraud-lighting',\n dependencies: [lights],\n vs: lightingShader,\n defines: {\n LIGHTING_VERTEX: 1\n },\n getUniforms\n};\n\n/** @type {ShaderModule} */\nexport const phongLighting = {\n name: 'phong-lighting',\n dependencies: [lights],\n fs: lightingShader,\n defines: {\n LIGHTING_FRAGMENT: 1\n },\n getUniforms\n};\n"],"file":"phong-lighting.js"}
1
+ {"version":3,"file":"phong-lighting.js","names":["lights","lightingShader","INITIAL_MODULE_OPTIONS","getMaterialUniforms","material","ambient","diffuse","shininess","specularColor","lighting_uAmbient","lighting_uDiffuse","lighting_uShininess","lighting_uSpecularColor","map","x","getUniforms","opts","lighting_uEnabled","gouraudLighting","name","dependencies","vs","defines","LIGHTING_VERTEX","phongLighting","fs","LIGHTING_FRAGMENT"],"sources":["../../../../src/modules/phong-lighting/phong-lighting.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport {lights} from '../lights/lights';\nimport lightingShader from './phong-lighting.glsl';\n\nconst INITIAL_MODULE_OPTIONS = {};\n\nfunction getMaterialUniforms(material) {\n const {ambient = 0.35, diffuse = 0.6, shininess = 32, specularColor = [30, 30, 30]} = material;\n\n return {\n lighting_uAmbient: ambient,\n lighting_uDiffuse: diffuse,\n lighting_uShininess: shininess,\n lighting_uSpecularColor: specularColor.map(x => x / 255)\n };\n}\n\nfunction getUniforms(opts = INITIAL_MODULE_OPTIONS) {\n if (!('material' in opts)) {\n return {};\n }\n\n const {material} = opts;\n\n if (!material) {\n return {lighting_uEnabled: false};\n }\n\n return getMaterialUniforms(material);\n}\n\n/** @type {ShaderModule} */\nexport const gouraudLighting = {\n name: 'gouraud-lighting',\n dependencies: [lights],\n vs: lightingShader,\n defines: {\n LIGHTING_VERTEX: 1\n },\n getUniforms\n};\n\n/** @type {ShaderModule} */\nexport const phongLighting = {\n name: 'phong-lighting',\n dependencies: [lights],\n fs: lightingShader,\n defines: {\n LIGHTING_FRAGMENT: 1\n },\n getUniforms\n};\n"],"mappings":"AAEA,SAAQA,MAAR,QAAqB,kBAArB;AACA,OAAOC,cAAP,MAA2B,uBAA3B;AAEA,MAAMC,sBAAsB,GAAG,EAA/B;;AAEA,SAASC,mBAAT,CAA6BC,QAA7B,EAAuC;EACrC,MAAM;IAACC,OAAO,GAAG,IAAX;IAAiBC,OAAO,GAAG,GAA3B;IAAgCC,SAAS,GAAG,EAA5C;IAAgDC,aAAa,GAAG,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT;EAAhE,IAAgFJ,QAAtF;EAEA,OAAO;IACLK,iBAAiB,EAAEJ,OADd;IAELK,iBAAiB,EAAEJ,OAFd;IAGLK,mBAAmB,EAAEJ,SAHhB;IAILK,uBAAuB,EAAEJ,aAAa,CAACK,GAAd,CAAkBC,CAAC,IAAIA,CAAC,GAAG,GAA3B;EAJpB,CAAP;AAMD;;AAED,SAASC,WAAT,GAAoD;EAAA,IAA/BC,IAA+B,uEAAxBd,sBAAwB;;EAClD,IAAI,EAAE,cAAcc,IAAhB,CAAJ,EAA2B;IACzB,OAAO,EAAP;EACD;;EAED,MAAM;IAACZ;EAAD,IAAaY,IAAnB;;EAEA,IAAI,CAACZ,QAAL,EAAe;IACb,OAAO;MAACa,iBAAiB,EAAE;IAApB,CAAP;EACD;;EAED,OAAOd,mBAAmB,CAACC,QAAD,CAA1B;AACD;;AAGD,OAAO,MAAMc,eAAe,GAAG;EAC7BC,IAAI,EAAE,kBADuB;EAE7BC,YAAY,EAAE,CAACpB,MAAD,CAFe;EAG7BqB,EAAE,EAAEpB,cAHyB;EAI7BqB,OAAO,EAAE;IACPC,eAAe,EAAE;EADV,CAJoB;EAO7BR;AAP6B,CAAxB;AAWP,OAAO,MAAMS,aAAa,GAAG;EAC3BL,IAAI,EAAE,gBADqB;EAE3BC,YAAY,EAAE,CAACpB,MAAD,CAFa;EAG3ByB,EAAE,EAAExB,cAHuB;EAI3BqB,OAAO,EAAE;IACPI,iBAAiB,EAAE;EADZ,CAJkB;EAO3BX;AAP2B,CAAtB"}
@@ -6,7 +6,8 @@ const DEFAULT_MODULE_OPTIONS = {
6
6
  pickingAttribute: false
7
7
  };
8
8
 
9
- function getUniforms(opts = DEFAULT_MODULE_OPTIONS) {
9
+ function getUniforms() {
10
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MODULE_OPTIONS;
10
11
  const uniforms = {};
11
12
 
12
13
  if (opts.pickingSelectedColor !== undefined) {
@@ -37,92 +38,8 @@ function getUniforms(opts = DEFAULT_MODULE_OPTIONS) {
37
38
  return uniforms;
38
39
  }
39
40
 
40
- const vs = `\
41
- uniform bool picking_uActive;
42
- uniform bool picking_uAttribute;
43
- uniform vec3 picking_uSelectedColor;
44
- uniform bool picking_uSelectedColorValid;
45
-
46
- out vec4 picking_vRGBcolor_Avalid;
47
-
48
- const float COLOR_SCALE = 1. / 255.;
49
-
50
- bool picking_isColorValid(vec3 color) {
51
- return dot(color, vec3(1.0)) > 0.001;
52
- }
53
-
54
- bool isVertexPicked(vec3 vertexColor) {
55
- return
56
- picking_uSelectedColorValid &&
57
- !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));
58
- }
59
-
60
- void picking_setPickingColor(vec3 pickingColor) {
61
- if (picking_uActive) {
62
- picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));
63
-
64
- if (!picking_uAttribute) {
65
- picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;
66
- }
67
- } else {
68
- picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));
69
- }
70
- }
71
-
72
- void picking_setPickingAttribute(float value) {
73
- if (picking_uAttribute) {
74
- picking_vRGBcolor_Avalid.r = value;
75
- }
76
- }
77
- void picking_setPickingAttribute(vec2 value) {
78
- if (picking_uAttribute) {
79
- picking_vRGBcolor_Avalid.rg = value;
80
- }
81
- }
82
- void picking_setPickingAttribute(vec3 value) {
83
- if (picking_uAttribute) {
84
- picking_vRGBcolor_Avalid.rgb = value;
85
- }
86
- }
87
- `;
88
- const fs = `\
89
- uniform bool picking_uActive;
90
- uniform vec3 picking_uSelectedColor;
91
- uniform vec4 picking_uHighlightColor;
92
-
93
- in vec4 picking_vRGBcolor_Avalid;
94
- vec4 picking_filterHighlightColor(vec4 color) {
95
- if (picking_uActive) {
96
- return color;
97
- }
98
- bool selected = bool(picking_vRGBcolor_Avalid.a);
99
-
100
- if (selected) {
101
- float highLightAlpha = picking_uHighlightColor.a;
102
- float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);
103
- float highLightRatio = highLightAlpha / blendedAlpha;
104
-
105
- vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);
106
- return vec4(blendedRGB, blendedAlpha);
107
- } else {
108
- return color;
109
- }
110
- }
111
- vec4 picking_filterPickingColor(vec4 color) {
112
- if (picking_uActive) {
113
- if (picking_vRGBcolor_Avalid.a == 0.0) {
114
- discard;
115
- }
116
- return picking_vRGBcolor_Avalid;
117
- }
118
- return color;
119
- }
120
- vec4 picking_filterColor(vec4 color) {
121
- vec4 highightColor = picking_filterHighlightColor(color);
122
- return picking_filterPickingColor(highightColor);
123
- }
124
-
125
- `;
41
+ const vs = "uniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n";
42
+ const fs = "uniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n";
126
43
  export const picking = {
127
44
  name: 'picking',
128
45
  vs,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/picking/picking.js"],"names":["DEFAULT_HIGHLIGHT_COLOR","Uint8Array","DEFAULT_MODULE_OPTIONS","pickingSelectedColor","pickingHighlightColor","pickingActive","pickingAttribute","getUniforms","opts","uniforms","undefined","picking_uSelectedColorValid","selectedColor","slice","picking_uSelectedColor","color","Array","from","x","Number","isFinite","picking_uHighlightColor","picking_uActive","Boolean","picking_uAttribute","vs","fs","picking","name"],"mappings":"AAEA,MAAMA,uBAAuB,GAAG,IAAIC,UAAJ,CAAe,CAAC,CAAD,EAAI,GAAJ,EAAS,GAAT,EAAc,GAAd,CAAf,CAAhC;AAEA,MAAMC,sBAAsB,GAAG;AAC7BC,EAAAA,oBAAoB,EAAE,IADO;AAE7BC,EAAAA,qBAAqB,EAAEJ,uBAFM;AAG7BK,EAAAA,aAAa,EAAE,KAHc;AAI7BC,EAAAA,gBAAgB,EAAE;AAJW,CAA/B;;AAQA,SAASC,WAAT,CAAqBC,IAAI,GAAGN,sBAA5B,EAAoD;AAClD,QAAMO,QAAQ,GAAG,EAAjB;;AACA,MAAID,IAAI,CAACL,oBAAL,KAA8BO,SAAlC,EAA6C;AAC3C,QAAI,CAACF,IAAI,CAACL,oBAAV,EAAgC;AAC9BM,MAAAA,QAAQ,CAACE,2BAAT,GAAuC,CAAvC;AACD,KAFD,MAEO;AACL,YAAMC,aAAa,GAAGJ,IAAI,CAACL,oBAAL,CAA0BU,KAA1B,CAAgC,CAAhC,EAAmC,CAAnC,CAAtB;AACAJ,MAAAA,QAAQ,CAACE,2BAAT,GAAuC,CAAvC;AACAF,MAAAA,QAAQ,CAACK,sBAAT,GAAkCF,aAAlC;AACD;AACF;;AACD,MAAIJ,IAAI,CAACJ,qBAAT,EAAgC;AAC9B,UAAMW,KAAK,GAAGC,KAAK,CAACC,IAAN,CAAWT,IAAI,CAACJ,qBAAhB,EAAuCc,CAAC,IAAIA,CAAC,GAAG,GAAhD,CAAd;;AACA,QAAI,CAACC,MAAM,CAACC,QAAP,CAAgBL,KAAK,CAAC,CAAD,CAArB,CAAL,EAAgC;AAC9BA,MAAAA,KAAK,CAAC,CAAD,CAAL,GAAW,CAAX;AACD;;AACDN,IAAAA,QAAQ,CAACY,uBAAT,GAAmCN,KAAnC;AACD;;AACD,MAAIP,IAAI,CAACH,aAAL,KAAuBK,SAA3B,EAAsC;AACpCD,IAAAA,QAAQ,CAACa,eAAT,GAA2BC,OAAO,CAACf,IAAI,CAACH,aAAN,CAAlC;AACAI,IAAAA,QAAQ,CAACe,kBAAT,GAA8BD,OAAO,CAACf,IAAI,CAACF,gBAAN,CAArC;AACD;;AACD,SAAOG,QAAP;AACD;;AAED,MAAMgB,EAAE,GAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CA/CA;AAoDA,MAAMC,EAAE,GAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CArCA;AAqDA,OAAO,MAAMC,OAAO,GAAG;AACrBC,EAAAA,IAAI,EAAE,SADe;AAErBH,EAAAA,EAFqB;AAGrBC,EAAAA,EAHqB;AAIrBnB,EAAAA;AAJqB,CAAhB","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([0, 255, 255, 255]);\n\nconst DEFAULT_MODULE_OPTIONS = {\n pickingSelectedColor: null, // Set to a picking color to visually highlight that item\n pickingHighlightColor: DEFAULT_HIGHLIGHT_COLOR, // Color of visual highlight of \"selected\" item\n pickingActive: false, // Set to true when rendering to off-screen \"picking\" buffer\n pickingAttribute: false // Set to true when picking an attribute value instead of object index\n};\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS) {\n const uniforms = {};\n if (opts.pickingSelectedColor !== undefined) {\n if (!opts.pickingSelectedColor) {\n uniforms.picking_uSelectedColorValid = 0;\n } else {\n const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n uniforms.picking_uSelectedColorValid = 1;\n uniforms.picking_uSelectedColor = selectedColor;\n }\n }\n if (opts.pickingHighlightColor) {\n const color = Array.from(opts.pickingHighlightColor, x => x / 255);\n if (!Number.isFinite(color[3])) {\n color[3] = 1;\n }\n uniforms.picking_uHighlightColor = color;\n }\n if (opts.pickingActive !== undefined) {\n uniforms.picking_uActive = Boolean(opts.pickingActive);\n uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n }\n return uniforms;\n}\n\nconst vs = `\\\nuniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n // Use alpha as the validity flag. If pickingColor is [0, 0, 0] fragment is non-pickable\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n // Stores the picking color so that the fragment shader can render it during picking\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n // Do the comparison with selected item color in vertex shader as it should mean fewer compares\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n`;\n\nconst fs = `\\\nuniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\n\n/*\n * Returns highlight color if this item is selected.\n */\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\n\n/*\n * Returns picking color if picking enabled else unmodified argument.\n */\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\n\n/*\n * Returns picking color if picking is enabled if not\n * highlight color if this item is selected, otherwise unmodified argument.\n */\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n`;\n\n/** @type {ShaderModule} */\nexport const picking = {\n name: 'picking',\n vs,\n fs,\n getUniforms\n};\n"],"file":"picking.js"}
1
+ {"version":3,"file":"picking.js","names":["DEFAULT_HIGHLIGHT_COLOR","Uint8Array","DEFAULT_MODULE_OPTIONS","pickingSelectedColor","pickingHighlightColor","pickingActive","pickingAttribute","getUniforms","opts","uniforms","undefined","picking_uSelectedColorValid","selectedColor","slice","picking_uSelectedColor","color","Array","from","x","Number","isFinite","picking_uHighlightColor","picking_uActive","Boolean","picking_uAttribute","vs","fs","picking","name"],"sources":["../../../../src/modules/picking/picking.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst DEFAULT_HIGHLIGHT_COLOR = new Uint8Array([0, 255, 255, 255]);\n\nconst DEFAULT_MODULE_OPTIONS = {\n pickingSelectedColor: null, // Set to a picking color to visually highlight that item\n pickingHighlightColor: DEFAULT_HIGHLIGHT_COLOR, // Color of visual highlight of \"selected\" item\n pickingActive: false, // Set to true when rendering to off-screen \"picking\" buffer\n pickingAttribute: false // Set to true when picking an attribute value instead of object index\n};\n\n/* eslint-disable camelcase */\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS) {\n const uniforms = {};\n if (opts.pickingSelectedColor !== undefined) {\n if (!opts.pickingSelectedColor) {\n uniforms.picking_uSelectedColorValid = 0;\n } else {\n const selectedColor = opts.pickingSelectedColor.slice(0, 3);\n uniforms.picking_uSelectedColorValid = 1;\n uniforms.picking_uSelectedColor = selectedColor;\n }\n }\n if (opts.pickingHighlightColor) {\n const color = Array.from(opts.pickingHighlightColor, x => x / 255);\n if (!Number.isFinite(color[3])) {\n color[3] = 1;\n }\n uniforms.picking_uHighlightColor = color;\n }\n if (opts.pickingActive !== undefined) {\n uniforms.picking_uActive = Boolean(opts.pickingActive);\n uniforms.picking_uAttribute = Boolean(opts.pickingAttribute);\n }\n return uniforms;\n}\n\nconst vs = `\\\nuniform bool picking_uActive;\nuniform bool picking_uAttribute;\nuniform vec3 picking_uSelectedColor;\nuniform bool picking_uSelectedColorValid;\n\nout vec4 picking_vRGBcolor_Avalid;\n\nconst float COLOR_SCALE = 1. / 255.;\n\nbool picking_isColorValid(vec3 color) {\n return dot(color, vec3(1.0)) > 0.001;\n}\n\nbool isVertexPicked(vec3 vertexColor) {\n return\n picking_uSelectedColorValid &&\n !picking_isColorValid(abs(vertexColor - picking_uSelectedColor));\n}\n\nvoid picking_setPickingColor(vec3 pickingColor) {\n if (picking_uActive) {\n // Use alpha as the validity flag. If pickingColor is [0, 0, 0] fragment is non-pickable\n picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor));\n\n if (!picking_uAttribute) {\n // Stores the picking color so that the fragment shader can render it during picking\n picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE;\n }\n } else {\n // Do the comparison with selected item color in vertex shader as it should mean fewer compares\n picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor));\n }\n}\n\nvoid picking_setPickingAttribute(float value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.r = value;\n }\n}\nvoid picking_setPickingAttribute(vec2 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rg = value;\n }\n}\nvoid picking_setPickingAttribute(vec3 value) {\n if (picking_uAttribute) {\n picking_vRGBcolor_Avalid.rgb = value;\n }\n}\n`;\n\nconst fs = `\\\nuniform bool picking_uActive;\nuniform vec3 picking_uSelectedColor;\nuniform vec4 picking_uHighlightColor;\n\nin vec4 picking_vRGBcolor_Avalid;\n\n/*\n * Returns highlight color if this item is selected.\n */\nvec4 picking_filterHighlightColor(vec4 color) {\n if (picking_uActive) {\n return color;\n }\n bool selected = bool(picking_vRGBcolor_Avalid.a);\n\n if (selected) {\n float highLightAlpha = picking_uHighlightColor.a;\n float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n float highLightRatio = highLightAlpha / blendedAlpha;\n\n vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio);\n return vec4(blendedRGB, blendedAlpha);\n } else {\n return color;\n }\n}\n\n/*\n * Returns picking color if picking enabled else unmodified argument.\n */\nvec4 picking_filterPickingColor(vec4 color) {\n if (picking_uActive) {\n if (picking_vRGBcolor_Avalid.a == 0.0) {\n discard;\n }\n return picking_vRGBcolor_Avalid;\n }\n return color;\n}\n\n/*\n * Returns picking color if picking is enabled if not\n * highlight color if this item is selected, otherwise unmodified argument.\n */\nvec4 picking_filterColor(vec4 color) {\n vec4 highightColor = picking_filterHighlightColor(color);\n return picking_filterPickingColor(highightColor);\n}\n\n`;\n\n/** @type {ShaderModule} */\nexport const picking = {\n name: 'picking',\n vs,\n fs,\n getUniforms\n};\n"],"mappings":"AAEA,MAAMA,uBAAuB,GAAG,IAAIC,UAAJ,CAAe,CAAC,CAAD,EAAI,GAAJ,EAAS,GAAT,EAAc,GAAd,CAAf,CAAhC;AAEA,MAAMC,sBAAsB,GAAG;EAC7BC,oBAAoB,EAAE,IADO;EAE7BC,qBAAqB,EAAEJ,uBAFM;EAG7BK,aAAa,EAAE,KAHc;EAI7BC,gBAAgB,EAAE;AAJW,CAA/B;;AAQA,SAASC,WAAT,GAAoD;EAAA,IAA/BC,IAA+B,uEAAxBN,sBAAwB;EAClD,MAAMO,QAAQ,GAAG,EAAjB;;EACA,IAAID,IAAI,CAACL,oBAAL,KAA8BO,SAAlC,EAA6C;IAC3C,IAAI,CAACF,IAAI,CAACL,oBAAV,EAAgC;MAC9BM,QAAQ,CAACE,2BAAT,GAAuC,CAAvC;IACD,CAFD,MAEO;MACL,MAAMC,aAAa,GAAGJ,IAAI,CAACL,oBAAL,CAA0BU,KAA1B,CAAgC,CAAhC,EAAmC,CAAnC,CAAtB;MACAJ,QAAQ,CAACE,2BAAT,GAAuC,CAAvC;MACAF,QAAQ,CAACK,sBAAT,GAAkCF,aAAlC;IACD;EACF;;EACD,IAAIJ,IAAI,CAACJ,qBAAT,EAAgC;IAC9B,MAAMW,KAAK,GAAGC,KAAK,CAACC,IAAN,CAAWT,IAAI,CAACJ,qBAAhB,EAAuCc,CAAC,IAAIA,CAAC,GAAG,GAAhD,CAAd;;IACA,IAAI,CAACC,MAAM,CAACC,QAAP,CAAgBL,KAAK,CAAC,CAAD,CAArB,CAAL,EAAgC;MAC9BA,KAAK,CAAC,CAAD,CAAL,GAAW,CAAX;IACD;;IACDN,QAAQ,CAACY,uBAAT,GAAmCN,KAAnC;EACD;;EACD,IAAIP,IAAI,CAACH,aAAL,KAAuBK,SAA3B,EAAsC;IACpCD,QAAQ,CAACa,eAAT,GAA2BC,OAAO,CAACf,IAAI,CAACH,aAAN,CAAlC;IACAI,QAAQ,CAACe,kBAAT,GAA8BD,OAAO,CAACf,IAAI,CAACF,gBAAN,CAArC;EACD;;EACD,OAAOG,QAAP;AACD;;AAED,MAAMgB,EAAE,isCAAR;AAoDA,MAAMC,EAAE,uhCAAR;AAqDA,OAAO,MAAMC,OAAO,GAAG;EACrBC,IAAI,EAAE,SADe;EAErBH,EAFqB;EAGrBC,EAHqB;EAIrBnB;AAJqB,CAAhB"}
@@ -7,7 +7,9 @@ const DEFAULT_MODULE_OPTIONS = {
7
7
  cameraPositionWorld: [0, 0, 0]
8
8
  };
9
9
 
10
- function getUniforms(opts = DEFAULT_MODULE_OPTIONS, prevUniforms = {}) {
10
+ function getUniforms() {
11
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_MODULE_OPTIONS;
12
+ let prevUniforms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
11
13
  const uniforms = {};
12
14
 
13
15
  if (opts.modelMatrix !== undefined) {
@@ -33,74 +35,9 @@ function getUniforms(opts = DEFAULT_MODULE_OPTIONS, prevUniforms = {}) {
33
35
  return uniforms;
34
36
  }
35
37
 
36
- const common = `\
37
- varying vec4 project_vPositionWorld;
38
- varying vec3 project_vNormalWorld;
39
-
40
- vec4 project_getPosition_World() {
41
- return project_vPositionWorld;
42
- }
43
-
44
- vec3 project_getNormal_World() {
45
- return project_vNormalWorld;
46
- }
47
- `;
48
- const vs = `\
49
- ${common}
50
- uniform mat4 modelMatrix;
51
- uniform mat4 viewMatrix;
52
- uniform mat4 projectionMatrix;
53
- uniform mat4 viewProjectionMatrix;
54
- uniform vec3 cameraPositionWorld;
55
-
56
- struct World {
57
- vec3 position;
58
- vec3 normal;
59
- };
60
-
61
- World world;
62
-
63
- void project_setPosition(vec4 position) {
64
- project_vPositionWorld = position;
65
- }
66
-
67
- void project_setNormal(vec3 normal) {
68
- project_vNormalWorld = normal;
69
- }
70
-
71
- void project_setPositionAndNormal_World(vec3 position, vec3 normal) {
72
- world.position = position;
73
- world.normal = normal;
74
- }
75
-
76
- void project_setPositionAndNormal_Model(vec3 position, vec3 normal) {
77
- world.position = (modelMatrix * vec4(position, 1.)).xyz;
78
- world.normal = mat3(modelMatrix) * normal;
79
- }
80
-
81
- vec4 project_model_to_clipspace(vec4 position) {
82
- return viewProjectionMatrix * modelMatrix * position;
83
- }
84
-
85
- vec4 project_model_to_clipspace(vec3 position) {
86
- return viewProjectionMatrix * modelMatrix * vec4(position, 1.);
87
- }
88
-
89
- vec4 project_world_to_clipspace(vec3 position) {
90
- return viewProjectionMatrix * vec4(position, 1.);
91
- }
92
-
93
- vec4 project_view_to_clipspace(vec3 position) {
94
- return projectionMatrix * vec4(position, 1.);
95
- }
96
-
97
- vec4 project_to_clipspace(vec3 position) {
98
- return viewProjectionMatrix * vec4(position, 1.);
99
- }
100
- `;
101
- const fs = `
102
- ${common}\
103
- `;
38
+ const common = "varying vec4 project_vPositionWorld;\nvarying vec3 project_vNormalWorld;\n\nvec4 project_getPosition_World() {\n return project_vPositionWorld;\n}\n\nvec3 project_getNormal_World() {\n return project_vNormalWorld;\n}\n";
39
+ const vs = "".concat(common, "\nuniform mat4 modelMatrix;\nuniform mat4 viewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewProjectionMatrix;\nuniform vec3 cameraPositionWorld;\n\nstruct World {\n vec3 position;\n vec3 normal;\n};\n\nWorld world;\n\nvoid project_setPosition(vec4 position) {\n project_vPositionWorld = position;\n}\n\nvoid project_setNormal(vec3 normal) {\n project_vNormalWorld = normal;\n}\n\nvoid project_setPositionAndNormal_World(vec3 position, vec3 normal) {\n world.position = position;\n world.normal = normal;\n}\n\nvoid project_setPositionAndNormal_Model(vec3 position, vec3 normal) {\n world.position = (modelMatrix * vec4(position, 1.)).xyz;\n world.normal = mat3(modelMatrix) * normal;\n}\n\nvec4 project_model_to_clipspace(vec4 position) {\n return viewProjectionMatrix * modelMatrix * position;\n}\n\nvec4 project_model_to_clipspace(vec3 position) {\n return viewProjectionMatrix * modelMatrix * vec4(position, 1.);\n}\n\nvec4 project_world_to_clipspace(vec3 position) {\n return viewProjectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_view_to_clipspace(vec3 position) {\n return projectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_to_clipspace(vec3 position) {\n return viewProjectionMatrix * vec4(position, 1.);\n}\n");
40
+ const fs = "\n".concat(common);
104
41
  export const project = {
105
42
  name: 'project',
106
43
  getUniforms,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/project/project.js"],"names":["Matrix4","IDENTITY_MATRIX","DEFAULT_MODULE_OPTIONS","modelMatrix","viewMatrix","projectionMatrix","cameraPositionWorld","getUniforms","opts","prevUniforms","uniforms","undefined","viewProjectionMatrix","multiplyRight","common","vs","fs","project","name"],"mappings":"AAEA,SAAQA,OAAR,QAAsB,eAAtB;AAEA,MAAMC,eAAe,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC,EAAwC,CAAxC,EAA2C,CAA3C,EAA8C,CAA9C,CAAxB;AAEA,MAAMC,sBAAsB,GAAG;AAC7BC,EAAAA,WAAW,EAAEF,eADgB;AAE7BG,EAAAA,UAAU,EAAEH,eAFiB;AAG7BI,EAAAA,gBAAgB,EAAEJ,eAHW;AAI7BK,EAAAA,mBAAmB,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP;AAJQ,CAA/B;;AAOA,SAASC,WAAT,CAAqBC,IAAI,GAAGN,sBAA5B,EAAoDO,YAAY,GAAG,EAAnE,EAAuE;AAKrE,QAAMC,QAAQ,GAAG,EAAjB;;AACA,MAAIF,IAAI,CAACL,WAAL,KAAqBQ,SAAzB,EAAoC;AAClCD,IAAAA,QAAQ,CAACP,WAAT,GAAuBK,IAAI,CAACL,WAA5B;AACD;;AACD,MAAIK,IAAI,CAACJ,UAAL,KAAoBO,SAAxB,EAAmC;AACjCD,IAAAA,QAAQ,CAACN,UAAT,GAAsBI,IAAI,CAACJ,UAA3B;AACD;;AACD,MAAII,IAAI,CAACH,gBAAL,KAA0BM,SAA9B,EAAyC;AACvCD,IAAAA,QAAQ,CAACL,gBAAT,GAA4BG,IAAI,CAACH,gBAAjC;AACD;;AACD,MAAIG,IAAI,CAACF,mBAAL,KAA6BK,SAAjC,EAA4C;AAC1CD,IAAAA,QAAQ,CAACJ,mBAAT,GAA+BE,IAAI,CAACF,mBAApC;AACD;;AAGD,MAAIE,IAAI,CAACH,gBAAL,KAA0BM,SAA1B,IAAuCH,IAAI,CAACJ,UAAL,KAAoBO,SAA/D,EAA0E;AACxED,IAAAA,QAAQ,CAACE,oBAAT,GAAgC,IAAIZ,OAAJ,CAAYQ,IAAI,CAACH,gBAAjB,EAAmCQ,aAAnC,CAC9BL,IAAI,CAACJ,UADyB,CAAhC;AAGD;;AAED,SAAOM,QAAP;AACD;;AAED,MAAMI,MAAM,GAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAXA;AAaA,MAAMC,EAAE,GAAI;AACZ,EAAED,MAAO;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CApDA;AAwDA,MAAME,EAAE,GAAI;AACZ,EAAEF,MAAO;AACT,CAFA;AAKA,OAAO,MAAMG,OAAO,GAAG;AACrBC,EAAAA,IAAI,EAAE,SADe;AAErBX,EAAAA,WAFqB;AAGrBQ,EAAAA,EAHqB;AAIrBC,EAAAA;AAJqB,CAAhB","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport {Matrix4} from '@math.gl/core';\n\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n\nconst DEFAULT_MODULE_OPTIONS = {\n modelMatrix: IDENTITY_MATRIX,\n viewMatrix: IDENTITY_MATRIX,\n projectionMatrix: IDENTITY_MATRIX,\n cameraPositionWorld: [0, 0, 0]\n};\n\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS, prevUniforms = {}) {\n // const viewProjectionInverse = viewProjection.invert();\n // viewInverseMatrix: view.invert(),\n // viewProjectionInverseMatrix: viewProjectionInverse\n\n const uniforms = {};\n if (opts.modelMatrix !== undefined) {\n uniforms.modelMatrix = opts.modelMatrix;\n }\n if (opts.viewMatrix !== undefined) {\n uniforms.viewMatrix = opts.viewMatrix;\n }\n if (opts.projectionMatrix !== undefined) {\n uniforms.projectionMatrix = opts.projectionMatrix;\n }\n if (opts.cameraPositionWorld !== undefined) {\n uniforms.cameraPositionWorld = opts.cameraPositionWorld;\n }\n\n // COMPOSITE UNIFORMS\n if (opts.projectionMatrix !== undefined || opts.viewMatrix !== undefined) {\n uniforms.viewProjectionMatrix = new Matrix4(opts.projectionMatrix).multiplyRight(\n opts.viewMatrix\n );\n }\n\n return uniforms;\n}\n\nconst common = `\\\nvarying vec4 project_vPositionWorld;\nvarying vec3 project_vNormalWorld;\n\nvec4 project_getPosition_World() {\n return project_vPositionWorld;\n}\n\nvec3 project_getNormal_World() {\n return project_vNormalWorld;\n}\n`;\n\nconst vs = `\\\n${common}\n\n// Unprefixed uniforms\nuniform mat4 modelMatrix;\nuniform mat4 viewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewProjectionMatrix;\nuniform vec3 cameraPositionWorld;\n\nstruct World {\n vec3 position;\n vec3 normal;\n};\n\nWorld world;\n\nvoid project_setPosition(vec4 position) {\n project_vPositionWorld = position;\n}\n\nvoid project_setNormal(vec3 normal) {\n project_vNormalWorld = normal;\n}\n\nvoid project_setPositionAndNormal_World(vec3 position, vec3 normal) {\n world.position = position;\n world.normal = normal;\n}\n\nvoid project_setPositionAndNormal_Model(vec3 position, vec3 normal) {\n world.position = (modelMatrix * vec4(position, 1.)).xyz;\n world.normal = mat3(modelMatrix) * normal;\n}\n\nvec4 project_model_to_clipspace(vec4 position) {\n return viewProjectionMatrix * modelMatrix * position;\n}\n\nvec4 project_model_to_clipspace(vec3 position) {\n return viewProjectionMatrix * modelMatrix * vec4(position, 1.);\n}\n\nvec4 project_world_to_clipspace(vec3 position) {\n return viewProjectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_view_to_clipspace(vec3 position) {\n return projectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_to_clipspace(vec3 position) {\n return viewProjectionMatrix * vec4(position, 1.);\n}\n`;\n\nconst fs = `\n${common}\\\n`;\n\n/** @type {ShaderModule} */\nexport const project = {\n name: 'project',\n getUniforms,\n vs,\n fs\n};\n"],"file":"project.js"}
1
+ {"version":3,"file":"project.js","names":["Matrix4","IDENTITY_MATRIX","DEFAULT_MODULE_OPTIONS","modelMatrix","viewMatrix","projectionMatrix","cameraPositionWorld","getUniforms","opts","prevUniforms","uniforms","undefined","viewProjectionMatrix","multiplyRight","common","vs","fs","project","name"],"sources":["../../../../src/modules/project/project.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nimport {Matrix4} from '@math.gl/core';\n\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n\nconst DEFAULT_MODULE_OPTIONS = {\n modelMatrix: IDENTITY_MATRIX,\n viewMatrix: IDENTITY_MATRIX,\n projectionMatrix: IDENTITY_MATRIX,\n cameraPositionWorld: [0, 0, 0]\n};\n\nfunction getUniforms(opts = DEFAULT_MODULE_OPTIONS, prevUniforms = {}) {\n // const viewProjectionInverse = viewProjection.invert();\n // viewInverseMatrix: view.invert(),\n // viewProjectionInverseMatrix: viewProjectionInverse\n\n const uniforms = {};\n if (opts.modelMatrix !== undefined) {\n uniforms.modelMatrix = opts.modelMatrix;\n }\n if (opts.viewMatrix !== undefined) {\n uniforms.viewMatrix = opts.viewMatrix;\n }\n if (opts.projectionMatrix !== undefined) {\n uniforms.projectionMatrix = opts.projectionMatrix;\n }\n if (opts.cameraPositionWorld !== undefined) {\n uniforms.cameraPositionWorld = opts.cameraPositionWorld;\n }\n\n // COMPOSITE UNIFORMS\n if (opts.projectionMatrix !== undefined || opts.viewMatrix !== undefined) {\n uniforms.viewProjectionMatrix = new Matrix4(opts.projectionMatrix).multiplyRight(\n opts.viewMatrix\n );\n }\n\n return uniforms;\n}\n\nconst common = `\\\nvarying vec4 project_vPositionWorld;\nvarying vec3 project_vNormalWorld;\n\nvec4 project_getPosition_World() {\n return project_vPositionWorld;\n}\n\nvec3 project_getNormal_World() {\n return project_vNormalWorld;\n}\n`;\n\nconst vs = `\\\n${common}\n\n// Unprefixed uniforms\nuniform mat4 modelMatrix;\nuniform mat4 viewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewProjectionMatrix;\nuniform vec3 cameraPositionWorld;\n\nstruct World {\n vec3 position;\n vec3 normal;\n};\n\nWorld world;\n\nvoid project_setPosition(vec4 position) {\n project_vPositionWorld = position;\n}\n\nvoid project_setNormal(vec3 normal) {\n project_vNormalWorld = normal;\n}\n\nvoid project_setPositionAndNormal_World(vec3 position, vec3 normal) {\n world.position = position;\n world.normal = normal;\n}\n\nvoid project_setPositionAndNormal_Model(vec3 position, vec3 normal) {\n world.position = (modelMatrix * vec4(position, 1.)).xyz;\n world.normal = mat3(modelMatrix) * normal;\n}\n\nvec4 project_model_to_clipspace(vec4 position) {\n return viewProjectionMatrix * modelMatrix * position;\n}\n\nvec4 project_model_to_clipspace(vec3 position) {\n return viewProjectionMatrix * modelMatrix * vec4(position, 1.);\n}\n\nvec4 project_world_to_clipspace(vec3 position) {\n return viewProjectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_view_to_clipspace(vec3 position) {\n return projectionMatrix * vec4(position, 1.);\n}\n\nvec4 project_to_clipspace(vec3 position) {\n return viewProjectionMatrix * vec4(position, 1.);\n}\n`;\n\nconst fs = `\n${common}\\\n`;\n\n/** @type {ShaderModule} */\nexport const project = {\n name: 'project',\n getUniforms,\n vs,\n fs\n};\n"],"mappings":"AAEA,SAAQA,OAAR,QAAsB,eAAtB;AAEA,MAAMC,eAAe,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC,EAAwC,CAAxC,EAA2C,CAA3C,EAA8C,CAA9C,CAAxB;AAEA,MAAMC,sBAAsB,GAAG;EAC7BC,WAAW,EAAEF,eADgB;EAE7BG,UAAU,EAAEH,eAFiB;EAG7BI,gBAAgB,EAAEJ,eAHW;EAI7BK,mBAAmB,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP;AAJQ,CAA/B;;AAOA,SAASC,WAAT,GAAuE;EAAA,IAAlDC,IAAkD,uEAA3CN,sBAA2C;EAAA,IAAnBO,YAAmB,uEAAJ,EAAI;EAKrE,MAAMC,QAAQ,GAAG,EAAjB;;EACA,IAAIF,IAAI,CAACL,WAAL,KAAqBQ,SAAzB,EAAoC;IAClCD,QAAQ,CAACP,WAAT,GAAuBK,IAAI,CAACL,WAA5B;EACD;;EACD,IAAIK,IAAI,CAACJ,UAAL,KAAoBO,SAAxB,EAAmC;IACjCD,QAAQ,CAACN,UAAT,GAAsBI,IAAI,CAACJ,UAA3B;EACD;;EACD,IAAII,IAAI,CAACH,gBAAL,KAA0BM,SAA9B,EAAyC;IACvCD,QAAQ,CAACL,gBAAT,GAA4BG,IAAI,CAACH,gBAAjC;EACD;;EACD,IAAIG,IAAI,CAACF,mBAAL,KAA6BK,SAAjC,EAA4C;IAC1CD,QAAQ,CAACJ,mBAAT,GAA+BE,IAAI,CAACF,mBAApC;EACD;;EAGD,IAAIE,IAAI,CAACH,gBAAL,KAA0BM,SAA1B,IAAuCH,IAAI,CAACJ,UAAL,KAAoBO,SAA/D,EAA0E;IACxED,QAAQ,CAACE,oBAAT,GAAgC,IAAIZ,OAAJ,CAAYQ,IAAI,CAACH,gBAAjB,EAAmCQ,aAAnC,CAC9BL,IAAI,CAACJ,UADyB,CAAhC;EAGD;;EAED,OAAOM,QAAP;AACD;;AAED,MAAMI,MAAM,iOAAZ;AAaA,MAAMC,EAAE,aACND,MADM,4uCAAR;AAwDA,MAAME,EAAE,eACNF,MADM,CAAR;AAKA,OAAO,MAAMG,OAAO,GAAG;EACrBC,IAAI,EAAE,SADe;EAErBX,WAFqB;EAGrBQ,EAHqB;EAIrBC;AAJqB,CAAhB"}
@@ -1,31 +1,4 @@
1
- const vs = `\
2
- attribute float transform_elementID;
3
- vec2 transform_getPixelSizeHalf(vec2 size) {
4
- return vec2(1.) / (2. * size);
5
- }
6
-
7
- vec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {
8
- float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);
9
- float xIndex = transform_elementID - (yIndex * texSize[0]);
10
- return vec2(xIndex, yIndex);
11
- }
12
- vec2 transform_getTexCoord(vec2 size) {
13
- vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);
14
- vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);
15
- vec2 coord = indices / size + pixelSizeHalf;
16
- return coord;
17
- }
18
- vec2 transform_getPos(vec2 size) {
19
- vec2 texCoord = transform_getTexCoord(size);
20
- vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);
21
- return pos;
22
- }
23
- vec4 transform_getInput(sampler2D texSampler, vec2 size) {
24
- vec2 texCoord = transform_getTexCoord(size);
25
- vec4 textureColor = texture2D(texSampler, texCoord);
26
- return textureColor;
27
- }
28
- `;
1
+ const vs = "attribute float transform_elementID;\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n";
29
2
  export const transform = {
30
3
  name: 'transform',
31
4
  vs,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/transform/transform.js"],"names":["vs","transform","name","fs"],"mappings":"AAEA,MAAMA,EAAE,GAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CA3BA;AA0CA,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,WADiB;AAEvBF,EAAAA,EAFuB;AAGvBG,EAAAA,EAAE,EAAE;AAHmB,CAAlB","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst vs = `\\\nattribute float transform_elementID;\n\n// returns half of pixel size, used to move the pixel position to center of the pixel.\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\n// returns current elements pixel indeces [x, y],\n// where x ranges in [0 to texSize-1] and y ranges in [0 to texSize-1]\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n // Add safe offset (half of pixel height) before doing floor\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\n\n// returns current elementID's texture co-ordianate\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\n\n// returns current elementID's position\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n // Change from [0 1] range to [-1 1]\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\n\n// returns current elementID's pixel value\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n`;\n\n/** @type {ShaderModule} */\nexport const transform = {\n name: 'transform',\n vs,\n fs: null\n};\n"],"file":"transform.js"}
1
+ {"version":3,"file":"transform.js","names":["vs","transform","name","fs"],"sources":["../../../../src/modules/transform/transform.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst vs = `\\\nattribute float transform_elementID;\n\n// returns half of pixel size, used to move the pixel position to center of the pixel.\nvec2 transform_getPixelSizeHalf(vec2 size) {\n return vec2(1.) / (2. * size);\n}\n\n// returns current elements pixel indeces [x, y],\n// where x ranges in [0 to texSize-1] and y ranges in [0 to texSize-1]\nvec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) {\n // Add safe offset (half of pixel height) before doing floor\n float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]);\n float xIndex = transform_elementID - (yIndex * texSize[0]);\n return vec2(xIndex, yIndex);\n}\n\n// returns current elementID's texture co-ordianate\nvec2 transform_getTexCoord(vec2 size) {\n vec2 pixelSizeHalf = transform_getPixelSizeHalf(size);\n vec2 indices = transform_getPixelIndices(size, pixelSizeHalf);\n vec2 coord = indices / size + pixelSizeHalf;\n return coord;\n}\n\n// returns current elementID's position\nvec2 transform_getPos(vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n // Change from [0 1] range to [-1 1]\n vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.);\n return pos;\n}\n\n// returns current elementID's pixel value\nvec4 transform_getInput(sampler2D texSampler, vec2 size) {\n vec2 texCoord = transform_getTexCoord(size);\n vec4 textureColor = texture2D(texSampler, texCoord);\n return textureColor;\n}\n`;\n\n/** @type {ShaderModule} */\nexport const transform = {\n name: 'transform',\n vs,\n fs: null\n};\n"],"mappings":"AAEA,MAAMA,EAAE,s7BAAR;AA0CA,OAAO,MAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,WADiB;EAEvBF,EAFuB;EAGvBG,EAAE,EAAE;AAHmB,CAAlB"}
@@ -1,8 +1,4 @@
1
- const fs = `\
2
- float random(vec3 scale, float seed) {
3
- return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);
4
- }
5
- `;
1
+ const fs = "float random(vec3 scale, float seed) {\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n";
6
2
  export const random = {
7
3
  name: 'random',
8
4
  fs
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/utils/random.js"],"names":["fs","random","name"],"mappings":"AAEA,MAAMA,EAAE,GAAI;AACZ;AACA;AACA;AACA,CAJA;AAOA,OAAO,MAAMC,MAAM,GAAG;AACpBC,EAAAA,IAAI,EAAE,QADc;AAEpBF,EAAAA;AAFoB,CAAf","sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst fs = `\\\nfloat random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n`;\n\nexport const random = {\n name: 'random',\n fs\n};\n"],"file":"random.js"}
1
+ {"version":3,"file":"random.js","names":["fs","random","name"],"sources":["../../../../src/modules/utils/random.js"],"sourcesContent":["/** @typedef {import('../../types').ShaderModule} ShaderModule */\n\nconst fs = `\\\nfloat random(vec3 scale, float seed) {\n /* use the fragment position for a different seed per-pixel */\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n`;\n\nexport const random = {\n name: 'random',\n fs\n};\n"],"mappings":"AAEA,MAAMA,EAAE,+HAAR;AAOA,OAAO,MAAMC,MAAM,GAAG;EACpBC,IAAI,EAAE,QADc;EAEpBF;AAFoB,CAAf"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/assert.js"],"names":["assert","condition","message","Error"],"mappings":"AAEA,eAAe,SAASA,MAAT,CAAgBC,SAAhB,EAA2BC,OAA3B,EAAoC;AACjD,MAAI,CAACD,SAAL,EAAgB;AACd,UAAM,IAAIE,KAAJ,CAAUD,OAAO,IAAI,gCAArB,CAAN;AACD;AACF","sourcesContent":["// Recommendation is to ignore message but current test suite checks agains the\n// message so keep it for now.\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'shadertools: assertion failed.');\n }\n}\n"],"file":"assert.js"}
1
+ {"version":3,"file":"assert.js","names":["assert","condition","message","Error"],"sources":["../../../src/utils/assert.js"],"sourcesContent":["// Recommendation is to ignore message but current test suite checks agains the\n// message so keep it for now.\nexport default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'shadertools: assertion failed.');\n }\n}\n"],"mappings":"AAEA,eAAe,SAASA,MAAT,CAAgBC,SAAhB,EAA2BC,OAA3B,EAAoC;EACjD,IAAI,CAACD,SAAL,EAAgB;IACd,MAAM,IAAIE,KAAJ,CAAUD,OAAO,IAAI,gCAArB,CAAN;EACD;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/index.js"],"names":["default","assert"],"mappings":"AAAA,SAAQA,OAAO,IAAIC,MAAnB,QAAgC,UAAhC","sourcesContent":["export {default as assert} from './assert';\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["default","assert"],"sources":["../../../src/utils/index.js"],"sourcesContent":["export {default as assert} from './assert';\n"],"mappings":"AAAA,SAAQA,OAAO,IAAIC,MAAnB,QAAgC,UAAhC"}
@@ -1,4 +1,5 @@
1
- export default function isOldIE(opts = {}) {
1
+ export default function isOldIE() {
2
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2
3
  const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};
3
4
  const userAgent = opts.userAgent || navigator.userAgent || '';
4
5
  const isMSIE = userAgent.indexOf('MSIE ') !== -1;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/is-old-ie.js"],"names":["isOldIE","opts","navigator","window","userAgent","isMSIE","indexOf","isTrident"],"mappings":"AACA,eAAe,SAASA,OAAT,CAAiBC,IAAI,GAAG,EAAxB,EAA4B;AACzC,QAAMC,SAAS,GAAG,OAAOC,MAAP,KAAkB,WAAlB,GAAgCA,MAAM,CAACD,SAAP,IAAoB,EAApD,GAAyD,EAA3E;AAEA,QAAME,SAAS,GAAGH,IAAI,CAACG,SAAL,IAAkBF,SAAS,CAACE,SAA5B,IAAyC,EAA3D;AAGA,QAAMC,MAAM,GAAGD,SAAS,CAACE,OAAV,CAAkB,OAAlB,MAA+B,CAAC,CAA/C;AACA,QAAMC,SAAS,GAAGH,SAAS,CAACE,OAAV,CAAkB,UAAlB,MAAkC,CAAC,CAArD;AACA,SAAOD,MAAM,IAAIE,SAAjB;AACD","sourcesContent":["// opts allows user agent to be overridden for testing\nexport default function isOldIE(opts = {}) {\n const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};\n // @ts-ignore\n const userAgent = opts.userAgent || navigator.userAgent || '';\n // We only care about older versions of IE (IE 11 and below). Newer versions of IE (Edge)\n // have much better web standards support.\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n return isMSIE || isTrident;\n}\n"],"file":"is-old-ie.js"}
1
+ {"version":3,"file":"is-old-ie.js","names":["isOldIE","opts","navigator","window","userAgent","isMSIE","indexOf","isTrident"],"sources":["../../../src/utils/is-old-ie.js"],"sourcesContent":["// opts allows user agent to be overridden for testing\nexport default function isOldIE(opts = {}) {\n const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};\n // @ts-ignore\n const userAgent = opts.userAgent || navigator.userAgent || '';\n // We only care about older versions of IE (IE 11 and below). Newer versions of IE (Edge)\n // have much better web standards support.\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n return isMSIE || isTrident;\n}\n"],"mappings":"AACA,eAAe,SAASA,OAAT,GAA4B;EAAA,IAAXC,IAAW,uEAAJ,EAAI;EACzC,MAAMC,SAAS,GAAG,OAAOC,MAAP,KAAkB,WAAlB,GAAgCA,MAAM,CAACD,SAAP,IAAoB,EAApD,GAAyD,EAA3E;EAEA,MAAME,SAAS,GAAGH,IAAI,CAACG,SAAL,IAAkBF,SAAS,CAACE,SAA5B,IAAyC,EAA3D;EAGA,MAAMC,MAAM,GAAGD,SAAS,CAACE,OAAV,CAAkB,OAAlB,MAA+B,CAAC,CAA/C;EACA,MAAMC,SAAS,GAAGH,SAAS,CAACE,OAAV,CAAkB,UAAlB,MAAkC,CAAC,CAArD;EACA,OAAOD,MAAM,IAAIE,SAAjB;AACD"}
@@ -1,11 +1,7 @@
1
1
  import { assert } from '../utils';
2
- const FS100 = `void main() {gl_FragColor = vec4(0);}`;
3
- const FS_GLES = `\
4
- out vec4 transform_output;
5
- void main() {
6
- transform_output = vec4(0);
7
- }`;
8
- const FS300 = `#version 300 es\n${FS_GLES}`;
2
+ const FS100 = "void main() {gl_FragColor = vec4(0);}";
3
+ const FS_GLES = "out vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}";
4
+ const FS300 = "#version 300 es\n".concat(FS_GLES);
9
5
  export function getQualifierDetails(line, qualifiers) {
10
6
  qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];
11
7
  const words = line.replace(/^\s+/, '').split(/\s+/);
@@ -22,7 +18,8 @@ export function getQualifierDetails(line, qualifiers) {
22
18
  name
23
19
  };
24
20
  }
25
- export function getPassthroughFS(options = {}) {
21
+ export function getPassthroughFS() {
22
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
26
23
  const {
27
24
  version = 100,
28
25
  input,
@@ -34,7 +31,7 @@ export function getPassthroughFS(options = {}) {
34
31
  if (version === 300) {
35
32
  return FS300;
36
33
  } else if (version > 300) {
37
- return `#version ${version}\n${FS_GLES}`;
34
+ return "#version ".concat(version, "\n").concat(FS_GLES);
38
35
  }
39
36
 
40
37
  return FS100;
@@ -43,20 +40,10 @@ export function getPassthroughFS(options = {}) {
43
40
  const outputValue = convertToVec4(input, inputType);
44
41
 
45
42
  if (version >= 300) {
46
- return `\
47
- #version ${version} ${version === 300 ? 'es' : ''}
48
- in ${inputType} ${input};
49
- out vec4 ${output};
50
- void main() {
51
- ${output} = ${outputValue};
52
- }`;
43
+ return "#version ".concat(version, " ").concat(version === 300 ? 'es' : '', "\nin ").concat(inputType, " ").concat(input, ";\nout vec4 ").concat(output, ";\nvoid main() {\n ").concat(output, " = ").concat(outputValue, ";\n}");
53
44
  }
54
45
 
55
- return `\
56
- varying ${inputType} ${input};
57
- void main() {
58
- gl_FragColor = ${outputValue};
59
- }`;
46
+ return "varying ".concat(inputType, " ").concat(input, ";\nvoid main() {\n gl_FragColor = ").concat(outputValue, ";\n}");
60
47
  }
61
48
  export function typeToChannelSuffix(type) {
62
49
  switch (type) {
@@ -99,13 +86,13 @@ export function typeToChannelCount(type) {
99
86
  export function convertToVec4(variable, type) {
100
87
  switch (type) {
101
88
  case 'float':
102
- return `vec4(${variable}, 0.0, 0.0, 1.0)`;
89
+ return "vec4(".concat(variable, ", 0.0, 0.0, 1.0)");
103
90
 
104
91
  case 'vec2':
105
- return `vec4(${variable}, 0.0, 1.0)`;
92
+ return "vec4(".concat(variable, ", 0.0, 1.0)");
106
93
 
107
94
  case 'vec3':
108
- return `vec4(${variable}, 1.0)`;
95
+ return "vec4(".concat(variable, ", 1.0)");
109
96
 
110
97
  case 'vec4':
111
98
  return variable;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/shader-utils.js"],"names":["assert","FS100","FS_GLES","FS300","getQualifierDetails","line","qualifiers","Array","isArray","words","replace","split","qualifier","type","definition","includes","name","getPassthroughFS","options","version","input","inputType","output","outputValue","convertToVec4","typeToChannelSuffix","typeToChannelCount","variable"],"mappings":"AAAA,SAAQA,MAAR,QAAqB,UAArB;AACA,MAAMC,KAAK,GAAI,uCAAf;AACA,MAAMC,OAAO,GAAI;AACjB;AACA;AACA;AACA,EAJA;AAKA,MAAMC,KAAK,GAAI,oBAAmBD,OAAQ,EAA1C;AAGA,OAAO,SAASE,mBAAT,CAA6BC,IAA7B,EAAmCC,UAAnC,EAA+C;AACpDA,EAAAA,UAAU,GAAGC,KAAK,CAACC,OAAN,CAAcF,UAAd,IAA4BA,UAA5B,GAAyC,CAACA,UAAD,CAAtD;AACA,QAAMG,KAAK,GAAGJ,IAAI,CAACK,OAAL,CAAa,MAAb,EAAqB,EAArB,EAAyBC,KAAzB,CAA+B,KAA/B,CAAd;AAEA,QAAM,CAACC,SAAD,EAAYC,IAAZ,EAAkBC,UAAlB,IAAgCL,KAAtC;;AACA,MAAI,CAACH,UAAU,CAACS,QAAX,CAAoBH,SAApB,CAAD,IAAmC,CAACC,IAApC,IAA4C,CAACC,UAAjD,EAA6D;AAC3D,WAAO,IAAP;AACD;;AACD,QAAME,IAAI,GAAGF,UAAU,CAACH,KAAX,CAAiB,GAAjB,EAAsB,CAAtB,CAAb;AACA,SAAO;AAACC,IAAAA,SAAD;AAAYC,IAAAA,IAAZ;AAAkBG,IAAAA;AAAlB,GAAP;AACD;AAID,OAAO,SAASC,gBAAT,CAA0BC,OAAO,GAAG,EAApC,EAAwC;AAC7C,QAAM;AAACC,IAAAA,OAAO,GAAG,GAAX;AAAgBC,IAAAA,KAAhB;AAAuBC,IAAAA,SAAvB;AAAkCC,IAAAA;AAAlC,MAA4CJ,OAAlD;;AACA,MAAI,CAACE,KAAL,EAAY;AACV,QAAID,OAAO,KAAK,GAAhB,EAAqB;AAEnB,aAAOhB,KAAP;AACD,KAHD,MAGO,IAAIgB,OAAO,GAAG,GAAd,EAAmB;AAExB,aAAQ,YAAWA,OAAQ,KAAIjB,OAAQ,EAAvC;AACD;;AAED,WAAOD,KAAP;AACD;;AACD,QAAMsB,WAAW,GAAGC,aAAa,CAACJ,KAAD,EAAQC,SAAR,CAAjC;;AACA,MAAIF,OAAO,IAAI,GAAf,EAAoB;AAElB,WAAQ;AACZ,WAAWA,OAAQ,IAAGA,OAAO,KAAK,GAAZ,GAAkB,IAAlB,GAAyB,EAAG;AAClD,KAAKE,SAAU,IAAGD,KAAM;AACxB,WAAWE,MAAO;AAClB;AACA,IAAIA,MAAO,MAAKC,WAAY;AAC5B,EANI;AAOD;;AAED,SAAQ;AACV,UAAUF,SAAU,IAAGD,KAAM;AAC7B;AACA,mBAAmBG,WAAY;AAC/B,EAJE;AAKD;AAGD,OAAO,SAASE,mBAAT,CAA6BZ,IAA7B,EAAmC;AACxC,UAAQA,IAAR;AACE,SAAK,OAAL;AACE,aAAO,GAAP;;AACF,SAAK,MAAL;AACE,aAAO,IAAP;;AACF,SAAK,MAAL;AACE,aAAO,KAAP;;AACF,SAAK,MAAL;AACE,aAAO,MAAP;;AACF;AACEb,MAAAA,MAAM,CAAC,KAAD,CAAN;AACA,aAAO,IAAP;AAXJ;AAaD;AAGD,OAAO,SAAS0B,kBAAT,CAA4Bb,IAA5B,EAAkC;AACvC,UAAQA,IAAR;AACE,SAAK,OAAL;AACE,aAAO,CAAP;;AACF,SAAK,MAAL;AACE,aAAO,CAAP;;AACF,SAAK,MAAL;AACE,aAAO,CAAP;;AACF,SAAK,MAAL;AACE,aAAO,CAAP;;AACF;AACEb,MAAAA,MAAM,CAAC,KAAD,CAAN;AACA,aAAO,IAAP;AAXJ;AAaD;AAGD,OAAO,SAASwB,aAAT,CAAuBG,QAAvB,EAAiCd,IAAjC,EAAuC;AAC5C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE,aAAQ,QAAOc,QAAS,kBAAxB;;AACF,SAAK,MAAL;AACE,aAAQ,QAAOA,QAAS,aAAxB;;AACF,SAAK,MAAL;AACE,aAAQ,QAAOA,QAAS,QAAxB;;AACF,SAAK,MAAL;AACE,aAAOA,QAAP;;AACF;AACE3B,MAAAA,MAAM,CAAC,KAAD,CAAN;AACA,aAAO,IAAP;AAXJ;AAaD","sourcesContent":["import {assert} from '../utils';\nconst FS100 = `void main() {gl_FragColor = vec4(0);}`;\nconst FS_GLES = `\\\nout vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`;\nconst FS300 = `#version 300 es\\n${FS_GLES}`;\n\n// Prase given glsl line and return qualifier details or null\nexport function getQualifierDetails(line, qualifiers) {\n qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n const words = line.replace(/^\\s+/, '').split(/\\s+/);\n // TODO add support for precession qualifiers (highp, mediump and lowp)\n const [qualifier, type, definition] = words;\n if (!qualifiers.includes(qualifier) || !type || !definition) {\n return null;\n }\n const name = definition.split(';')[0];\n return {qualifier, type, name};\n}\n\n// Given the shader version, input and output variable names,\n// builds and return a pass through fragment shader.\nexport function getPassthroughFS(options = {}) {\n const {version = 100, input, inputType, output} = options;\n if (!input) {\n if (version === 300) {\n // Fast-path for WebGL 2.0\n return FS300;\n } else if (version > 300) {\n // Use the supplied version for OpenGL/ES 3.2+\n return `#version ${version}\\n${FS_GLES}`;\n }\n // Fast-path for WebGL 1.0\n return FS100;\n }\n const outputValue = convertToVec4(input, inputType);\n if (version >= 300) {\n // If version is 300, assume WebGL 2.0\n return `\\\n#version ${version} ${version === 300 ? 'es' : ''}\nin ${inputType} ${input};\nout vec4 ${output};\nvoid main() {\n ${output} = ${outputValue};\n}`;\n }\n // WebGL 1.0\n return `\\\nvarying ${inputType} ${input};\nvoid main() {\n gl_FragColor = ${outputValue};\n}`;\n}\n\n// convert glsl type to suffix\nexport function typeToChannelSuffix(type) {\n switch (type) {\n case 'float':\n return 'x';\n case 'vec2':\n return 'xy';\n case 'vec3':\n return 'xyz';\n case 'vec4':\n return 'xyzw';\n default:\n assert(false);\n return null;\n }\n}\n\n// convert glsl type to channel count\nexport function typeToChannelCount(type) {\n switch (type) {\n case 'float':\n return 1;\n case 'vec2':\n return 2;\n case 'vec3':\n return 3;\n case 'vec4':\n return 4;\n default:\n assert(false);\n return null;\n }\n}\n\n// Returns glsl instruction for converting to vec4\nexport function convertToVec4(variable, type) {\n switch (type) {\n case 'float':\n return `vec4(${variable}, 0.0, 0.0, 1.0)`;\n case 'vec2':\n return `vec4(${variable}, 0.0, 1.0)`;\n case 'vec3':\n return `vec4(${variable}, 1.0)`;\n case 'vec4':\n return variable;\n default:\n assert(false);\n return null;\n }\n}\n"],"file":"shader-utils.js"}
1
+ {"version":3,"file":"shader-utils.js","names":["assert","FS100","FS_GLES","FS300","getQualifierDetails","line","qualifiers","Array","isArray","words","replace","split","qualifier","type","definition","includes","name","getPassthroughFS","options","version","input","inputType","output","outputValue","convertToVec4","typeToChannelSuffix","typeToChannelCount","variable"],"sources":["../../../src/utils/shader-utils.js"],"sourcesContent":["import {assert} from '../utils';\nconst FS100 = `void main() {gl_FragColor = vec4(0);}`;\nconst FS_GLES = `\\\nout vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`;\nconst FS300 = `#version 300 es\\n${FS_GLES}`;\n\n// Prase given glsl line and return qualifier details or null\nexport function getQualifierDetails(line, qualifiers) {\n qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n const words = line.replace(/^\\s+/, '').split(/\\s+/);\n // TODO add support for precession qualifiers (highp, mediump and lowp)\n const [qualifier, type, definition] = words;\n if (!qualifiers.includes(qualifier) || !type || !definition) {\n return null;\n }\n const name = definition.split(';')[0];\n return {qualifier, type, name};\n}\n\n// Given the shader version, input and output variable names,\n// builds and return a pass through fragment shader.\nexport function getPassthroughFS(options = {}) {\n const {version = 100, input, inputType, output} = options;\n if (!input) {\n if (version === 300) {\n // Fast-path for WebGL 2.0\n return FS300;\n } else if (version > 300) {\n // Use the supplied version for OpenGL/ES 3.2+\n return `#version ${version}\\n${FS_GLES}`;\n }\n // Fast-path for WebGL 1.0\n return FS100;\n }\n const outputValue = convertToVec4(input, inputType);\n if (version >= 300) {\n // If version is 300, assume WebGL 2.0\n return `\\\n#version ${version} ${version === 300 ? 'es' : ''}\nin ${inputType} ${input};\nout vec4 ${output};\nvoid main() {\n ${output} = ${outputValue};\n}`;\n }\n // WebGL 1.0\n return `\\\nvarying ${inputType} ${input};\nvoid main() {\n gl_FragColor = ${outputValue};\n}`;\n}\n\n// convert glsl type to suffix\nexport function typeToChannelSuffix(type) {\n switch (type) {\n case 'float':\n return 'x';\n case 'vec2':\n return 'xy';\n case 'vec3':\n return 'xyz';\n case 'vec4':\n return 'xyzw';\n default:\n assert(false);\n return null;\n }\n}\n\n// convert glsl type to channel count\nexport function typeToChannelCount(type) {\n switch (type) {\n case 'float':\n return 1;\n case 'vec2':\n return 2;\n case 'vec3':\n return 3;\n case 'vec4':\n return 4;\n default:\n assert(false);\n return null;\n }\n}\n\n// Returns glsl instruction for converting to vec4\nexport function convertToVec4(variable, type) {\n switch (type) {\n case 'float':\n return `vec4(${variable}, 0.0, 0.0, 1.0)`;\n case 'vec2':\n return `vec4(${variable}, 0.0, 1.0)`;\n case 'vec3':\n return `vec4(${variable}, 1.0)`;\n case 'vec4':\n return variable;\n default:\n assert(false);\n return null;\n }\n}\n"],"mappings":"AAAA,SAAQA,MAAR,QAAqB,UAArB;AACA,MAAMC,KAAK,0CAAX;AACA,MAAMC,OAAO,gFAAb;AAKA,MAAMC,KAAK,8BAAuBD,OAAvB,CAAX;AAGA,OAAO,SAASE,mBAAT,CAA6BC,IAA7B,EAAmCC,UAAnC,EAA+C;EACpDA,UAAU,GAAGC,KAAK,CAACC,OAAN,CAAcF,UAAd,IAA4BA,UAA5B,GAAyC,CAACA,UAAD,CAAtD;EACA,MAAMG,KAAK,GAAGJ,IAAI,CAACK,OAAL,CAAa,MAAb,EAAqB,EAArB,EAAyBC,KAAzB,CAA+B,KAA/B,CAAd;EAEA,MAAM,CAACC,SAAD,EAAYC,IAAZ,EAAkBC,UAAlB,IAAgCL,KAAtC;;EACA,IAAI,CAACH,UAAU,CAACS,QAAX,CAAoBH,SAApB,CAAD,IAAmC,CAACC,IAApC,IAA4C,CAACC,UAAjD,EAA6D;IAC3D,OAAO,IAAP;EACD;;EACD,MAAME,IAAI,GAAGF,UAAU,CAACH,KAAX,CAAiB,GAAjB,EAAsB,CAAtB,CAAb;EACA,OAAO;IAACC,SAAD;IAAYC,IAAZ;IAAkBG;EAAlB,CAAP;AACD;AAID,OAAO,SAASC,gBAAT,GAAwC;EAAA,IAAdC,OAAc,uEAAJ,EAAI;EAC7C,MAAM;IAACC,OAAO,GAAG,GAAX;IAAgBC,KAAhB;IAAuBC,SAAvB;IAAkCC;EAAlC,IAA4CJ,OAAlD;;EACA,IAAI,CAACE,KAAL,EAAY;IACV,IAAID,OAAO,KAAK,GAAhB,EAAqB;MAEnB,OAAOhB,KAAP;IACD,CAHD,MAGO,IAAIgB,OAAO,GAAG,GAAd,EAAmB;MAExB,0BAAmBA,OAAnB,eAA+BjB,OAA/B;IACD;;IAED,OAAOD,KAAP;EACD;;EACD,MAAMsB,WAAW,GAAGC,aAAa,CAACJ,KAAD,EAAQC,SAAR,CAAjC;;EACA,IAAIF,OAAO,IAAI,GAAf,EAAoB;IAElB,0BACOA,OADP,cACkBA,OAAO,KAAK,GAAZ,GAAkB,IAAlB,GAAyB,EAD3C,kBAECE,SAFD,cAEcD,KAFd,yBAGOE,MAHP,iCAKAA,MALA,gBAKYC,WALZ;EAOD;;EAED,yBACQF,SADR,cACqBD,KADrB,gDAGiBG,WAHjB;AAKD;AAGD,OAAO,SAASE,mBAAT,CAA6BZ,IAA7B,EAAmC;EACxC,QAAQA,IAAR;IACE,KAAK,OAAL;MACE,OAAO,GAAP;;IACF,KAAK,MAAL;MACE,OAAO,IAAP;;IACF,KAAK,MAAL;MACE,OAAO,KAAP;;IACF,KAAK,MAAL;MACE,OAAO,MAAP;;IACF;MACEb,MAAM,CAAC,KAAD,CAAN;MACA,OAAO,IAAP;EAXJ;AAaD;AAGD,OAAO,SAAS0B,kBAAT,CAA4Bb,IAA5B,EAAkC;EACvC,QAAQA,IAAR;IACE,KAAK,OAAL;MACE,OAAO,CAAP;;IACF,KAAK,MAAL;MACE,OAAO,CAAP;;IACF,KAAK,MAAL;MACE,OAAO,CAAP;;IACF,KAAK,MAAL;MACE,OAAO,CAAP;;IACF;MACEb,MAAM,CAAC,KAAD,CAAN;MACA,OAAO,IAAP;EAXJ;AAaD;AAGD,OAAO,SAASwB,aAAT,CAAuBG,QAAvB,EAAiCd,IAAjC,EAAuC;EAC5C,QAAQA,IAAR;IACE,KAAK,OAAL;MACE,sBAAec,QAAf;;IACF,KAAK,MAAL;MACE,sBAAeA,QAAf;;IACF,KAAK,MAAL;MACE,sBAAeA,QAAf;;IACF,KAAK,MAAL;MACE,OAAOA,QAAP;;IACF;MACE3B,MAAM,CAAC,KAAD,CAAN;MACA,OAAO,IAAP;EAXJ;AAaD"}
@@ -56,7 +56,8 @@ function identifyGPUVendor(vendor, renderer) {
56
56
  }
57
57
 
58
58
  const compiledGlslExtensions = {};
59
- export function canCompileGLGSExtension(gl, cap, opts = {}) {
59
+ export function canCompileGLGSExtension(gl, cap) {
60
+ let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
60
61
  const feature = WEBGL_FEATURES[cap];
61
62
  assert(feature, cap);
62
63
 
@@ -70,7 +71,7 @@ export function canCompileGLGSExtension(gl, cap, opts = {}) {
70
71
 
71
72
  const extensionName = feature[0];
72
73
  const behavior = opts.behavior || 'enable';
73
- const source = `#extension GL_${extensionName} : ${behavior}\nvoid main(void) {}`;
74
+ const source = "#extension GL_".concat(extensionName, " : ").concat(behavior, "\nvoid main(void) {}");
74
75
  const shader = gl.createShader(35633);
75
76
  gl.shaderSource(shader, source);
76
77
  gl.compileShader(shader);