@itwin/core-frontend 3.5.0-dev.61 → 3.5.0-dev.65

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 (158) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/lib/cjs/IModelConnection.d.ts +13 -1
  3. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  4. package/lib/cjs/IModelConnection.js +17 -1
  5. package/lib/cjs/IModelConnection.js.map +1 -1
  6. package/lib/cjs/ViewPose.d.ts +62 -10
  7. package/lib/cjs/ViewPose.d.ts.map +1 -1
  8. package/lib/cjs/ViewPose.js +37 -8
  9. package/lib/cjs/ViewPose.js.map +1 -1
  10. package/lib/cjs/ViewState.d.ts +18 -10
  11. package/lib/cjs/ViewState.d.ts.map +1 -1
  12. package/lib/cjs/ViewState.js +17 -13
  13. package/lib/cjs/ViewState.js.map +1 -1
  14. package/lib/cjs/render/RenderMaterial.d.ts +3 -1
  15. package/lib/cjs/render/RenderMaterial.d.ts.map +1 -1
  16. package/lib/cjs/render/RenderMaterial.js.map +1 -1
  17. package/lib/cjs/render/RenderTarget.d.ts +1 -0
  18. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  19. package/lib/cjs/render/RenderTarget.js.map +1 -1
  20. package/lib/cjs/render/webgl/MeshData.d.ts +1 -0
  21. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
  22. package/lib/cjs/render/webgl/MeshData.js +13 -0
  23. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  24. package/lib/cjs/render/webgl/MeshGeometry.d.ts +1 -0
  25. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
  26. package/lib/cjs/render/webgl/MeshGeometry.js +1 -0
  27. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
  28. package/lib/cjs/render/webgl/RenderFlags.d.ts +2 -1
  29. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  30. package/lib/cjs/render/webgl/RenderFlags.js +2 -0
  31. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  32. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +2 -1
  33. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  34. package/lib/cjs/render/webgl/ShaderBuilder.js +6 -1
  35. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  36. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +3 -0
  37. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  38. package/lib/cjs/render/webgl/SurfaceGeometry.js +16 -1
  39. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  40. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  41. package/lib/cjs/render/webgl/System.js +1 -0
  42. package/lib/cjs/render/webgl/System.js.map +1 -1
  43. package/lib/cjs/render/webgl/Target.d.ts +1 -0
  44. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  45. package/lib/cjs/render/webgl/Target.js +1 -0
  46. package/lib/cjs/render/webgl/Target.js.map +1 -1
  47. package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
  48. package/lib/cjs/render/webgl/glsl/Animation.js +2 -1
  49. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  50. package/lib/cjs/render/webgl/glsl/Common.d.ts +3 -1
  51. package/lib/cjs/render/webgl/glsl/Common.d.ts.map +1 -1
  52. package/lib/cjs/render/webgl/glsl/Common.js +28 -33
  53. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  54. package/lib/cjs/render/webgl/glsl/Lighting.d.ts.map +1 -1
  55. package/lib/cjs/render/webgl/glsl/Lighting.js +6 -8
  56. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  57. package/lib/cjs/render/webgl/glsl/PointCloud.js +1 -1
  58. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  59. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts +1 -0
  60. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  61. package/lib/cjs/render/webgl/glsl/RealityMesh.js +6 -1
  62. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  63. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.d.ts.map +1 -1
  64. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +1 -4
  65. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  66. package/lib/cjs/render/webgl/glsl/Surface.d.ts +1 -1
  67. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  68. package/lib/cjs/render/webgl/glsl/Surface.js +86 -14
  69. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  70. package/lib/cjs/render/webgl/glsl/Thematic.d.ts.map +1 -1
  71. package/lib/cjs/render/webgl/glsl/Thematic.js +2 -6
  72. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  73. package/lib/cjs/tile/GltfReader.d.ts +4 -2
  74. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  75. package/lib/cjs/tile/GltfReader.js +62 -21
  76. package/lib/cjs/tile/GltfReader.js.map +1 -1
  77. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  78. package/lib/cjs/tile/ImdlReader.js +1 -0
  79. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  80. package/lib/esm/IModelConnection.d.ts +13 -1
  81. package/lib/esm/IModelConnection.d.ts.map +1 -1
  82. package/lib/esm/IModelConnection.js +17 -1
  83. package/lib/esm/IModelConnection.js.map +1 -1
  84. package/lib/esm/ViewPose.d.ts +62 -10
  85. package/lib/esm/ViewPose.d.ts.map +1 -1
  86. package/lib/esm/ViewPose.js +37 -8
  87. package/lib/esm/ViewPose.js.map +1 -1
  88. package/lib/esm/ViewState.d.ts +18 -10
  89. package/lib/esm/ViewState.d.ts.map +1 -1
  90. package/lib/esm/ViewState.js +17 -13
  91. package/lib/esm/ViewState.js.map +1 -1
  92. package/lib/esm/render/RenderMaterial.d.ts +3 -1
  93. package/lib/esm/render/RenderMaterial.d.ts.map +1 -1
  94. package/lib/esm/render/RenderMaterial.js.map +1 -1
  95. package/lib/esm/render/RenderTarget.d.ts +1 -0
  96. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  97. package/lib/esm/render/RenderTarget.js.map +1 -1
  98. package/lib/esm/render/webgl/MeshData.d.ts +1 -0
  99. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
  100. package/lib/esm/render/webgl/MeshData.js +13 -0
  101. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  102. package/lib/esm/render/webgl/MeshGeometry.d.ts +1 -0
  103. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
  104. package/lib/esm/render/webgl/MeshGeometry.js +1 -0
  105. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
  106. package/lib/esm/render/webgl/RenderFlags.d.ts +2 -1
  107. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  108. package/lib/esm/render/webgl/RenderFlags.js +2 -0
  109. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  110. package/lib/esm/render/webgl/ShaderBuilder.d.ts +2 -1
  111. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  112. package/lib/esm/render/webgl/ShaderBuilder.js +6 -1
  113. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  114. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +3 -0
  115. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  116. package/lib/esm/render/webgl/SurfaceGeometry.js +16 -1
  117. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  118. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  119. package/lib/esm/render/webgl/System.js +1 -0
  120. package/lib/esm/render/webgl/System.js.map +1 -1
  121. package/lib/esm/render/webgl/Target.d.ts +1 -0
  122. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  123. package/lib/esm/render/webgl/Target.js +1 -0
  124. package/lib/esm/render/webgl/Target.js.map +1 -1
  125. package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
  126. package/lib/esm/render/webgl/glsl/Animation.js +2 -1
  127. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  128. package/lib/esm/render/webgl/glsl/Common.d.ts +3 -1
  129. package/lib/esm/render/webgl/glsl/Common.d.ts.map +1 -1
  130. package/lib/esm/render/webgl/glsl/Common.js +25 -31
  131. package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
  132. package/lib/esm/render/webgl/glsl/Lighting.d.ts.map +1 -1
  133. package/lib/esm/render/webgl/glsl/Lighting.js +6 -8
  134. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  135. package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
  136. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  137. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts +1 -0
  138. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  139. package/lib/esm/render/webgl/glsl/RealityMesh.js +5 -0
  140. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  141. package/lib/esm/render/webgl/glsl/SolarShadowMapping.d.ts.map +1 -1
  142. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -4
  143. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  144. package/lib/esm/render/webgl/glsl/Surface.d.ts +1 -1
  145. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  146. package/lib/esm/render/webgl/glsl/Surface.js +87 -15
  147. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  148. package/lib/esm/render/webgl/glsl/Thematic.d.ts.map +1 -1
  149. package/lib/esm/render/webgl/glsl/Thematic.js +2 -6
  150. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  151. package/lib/esm/tile/GltfReader.d.ts +4 -2
  152. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  153. package/lib/esm/tile/GltfReader.js +62 -21
  154. package/lib/esm/tile/GltfReader.js.map +1 -1
  155. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  156. package/lib/esm/tile/ImdlReader.js +1 -0
  157. package/lib/esm/tile/ImdlReader.js.map +1 -1
  158. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"Thematic.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Thematic.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { ThematicDisplayMode, ThematicGradientMode } from \"@itwin/core-common\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { unpackFloat } from \"./Clipping\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\nimport { addInstancedRtcMatrix, addProjectionMatrix } from \"./Vertex\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { addEyeSpace } from \"./Common\";\r\n\r\nconst getSensorFloat = `\r\nvec4 getSensor(int index) {\r\n float x = 0.5;\r\n float y = (float(index) + 0.5) / float(u_numSensors);\r\n return TEXTURE(s_sensorSampler, vec2(x, y));\r\n}\r\n`;\r\n\r\nconst unpackSensor = `\r\nvec4 getSensor(int index) {\r\n float y = (float(index) + 0.5) / float(u_numSensors);\r\n float sx = 0.25;\r\n vec2 tc = vec2(0.125, y);\r\n float posX = unpackFloat(TEXTURE(s_sensorSampler, tc));\r\n tc.x += sx;\r\n float posY = unpackFloat(TEXTURE(s_sensorSampler, tc));\r\n tc.x += sx;\r\n float posZ = unpackFloat(TEXTURE(s_sensorSampler, tc));\r\n tc.x += sx;\r\n float value = unpackFloat(TEXTURE(s_sensorSampler, tc));\r\n return vec4(posX, posY, posZ, value);\r\n}\r\n`;\r\n\r\n// Access a gradient texture at the specified index.\r\n// A stepped gradient texture is arranged with single unique color pixels for each step. The dimension of a stepped gradient texture is stepCount.\r\n// A smooth gradient texture is arranged with blended color pixels across the entire span of the texture. The dimension of a smooth gradient texture is the system's maximum texture size.\r\nconst getColor = `\r\nvec3 getColor(float ndx) {\r\n if (ndx < 0.0 || ndx > 1.0)\r\n return u_marginColor;\r\n\r\n return TEXTURE(s_texture, vec2(0.0, ndx)).rgb;\r\n}\r\n`;\r\n\r\n// Access a stepped gradient texture at the specified index taking into account isolines.\r\n// The texture format is exactly as described above for stepped mode. We just access the gradient differently,\r\n// specifically to ensure that the texels sampled result in lines of overall singular colors - no stepping into the\r\n// neighboring bands.\r\nconst getIsoLineColor = `\r\nvec3 getIsoLineColor(float ndx, float stepCount) {\r\n if (ndx < 0.01 || ndx > 0.99)\r\n return u_marginColor;\r\n\r\n ndx += 0.5 / stepCount; // center on step pixels\r\n return TEXTURE(s_texture, vec2(0.0, ndx)).rgb;\r\n}\r\n`;\r\n\r\nconst fwidthWhenAvailable = `\\nfloat _universal_fwidth(float coord) { return fwidth(coord); }\\n`;\r\nconst fwidthWhenNotAvailable = `\\nfloat _universal_fwidth(float coord) { return coord; }\\n`; // ###TODO: can we do something reasonable in this case?\r\n\r\nconst slopeAndHillShadeShader = ` else if (kThematicDisplayMode_Slope == u_thematicDisplayMode) {\r\n float d = dot(v_n, u_thematicAxis);\r\n if (d < 0.0)\r\n d = -d;\r\n\r\n // The range of d is now 0 to 1 (90 degrees to 0 degrees).\r\n // However, the range from 0 to 1 is not linear. Therefore, we use acos() to find the actual angle in radians.\r\n d = acos(d);\r\n\r\n // range of d is currently 1.5708 to 0 radians.\r\n if (d < u_thematicRange.x || d > u_thematicRange.y)\r\n d = -1.0; // use marginColor if outside the requested range\r\n else { // convert d from radians to 0 to 1 using requested range\r\n d -= u_thematicRange.x;\r\n d /= (u_thematicRange.y - u_thematicRange.x);\r\n }\r\n\r\n ndx = d;\r\n } else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {\r\n float d = dot(v_n, u_thematicSunDirection);\r\n\r\n // In the case of HillShade, v_thematicIndex contains the normal's z in world space.\r\n if (!gl_FrontFacing && v_thematicIndex < 0.0)\r\n d = -d;\r\n\r\n ndx = max(0.0, d);\r\n }`;\r\n\r\n// Access the appropriate gradient texel for a particular index based on display mode and gradient mode.\r\nconst applyThematicColorPrelude = `\r\n float ndx = v_thematicIndex;\r\n\r\n if (kThematicDisplayMode_InverseDistanceWeightedSensors == u_thematicDisplayMode) {\r\n float sensorSum = 0.0;\r\n float contributionSum = 0.0;\r\n\r\n vec3 sensorPos;\r\n float sensorValue;\r\n float sensorWeight;\r\n\r\n ndx = -1.0; // default index = marginColor\r\n\r\n float distanceCutoff = u_thematicSettings.y;\r\n\r\n for (int i = 0; i < 8192; i++) { // ###TODO: set maximum number of sensors during an incremental form of shader construction\r\n if (i >= u_numSensors)\r\n break;\r\n\r\n vec4 sensor = getSensor(i);\r\n\r\n float dist = distance(v_eyeSpace, sensor.xyz);\r\n\r\n bool skipThisSensor = (distanceCutoff > 0.0 && dist > distanceCutoff);\r\n if (!skipThisSensor) {\r\n float contribution = 1.0 / pow(dist, 2.0);\r\n sensorSum += sensor.w * contribution;\r\n contributionSum += contribution;\r\n }\r\n }\r\n\r\n if (contributionSum > 0.0) // avoid division by zero\r\n ndx = sensorSum / contributionSum;\r\n }`;\r\n\r\nconst applyThematicColorPostlude = `\r\n float gradientMode = u_thematicSettings.x;\r\n float stepCount = u_thematicSettings.z;\r\n\r\n vec4 rgba = vec4((kThematicGradientMode_IsoLines == gradientMode) ? getIsoLineColor(ndx, stepCount) : getColor(ndx), baseColor.a);\r\n rgba = mix(rgba, baseColor, u_thematicColorMix);\r\n\r\n if (kThematicGradientMode_IsoLines == gradientMode) {\r\n float coord = v_thematicIndex * stepCount;\r\n float line = abs(fract(coord - 0.5) - 0.5) / _universal_fwidth(coord);\r\n rgba.a = 1.0 - min(line, 1.0);\r\n if (u_discardBetweenIsolines && 0.0 == rgba.a)\r\n discard;\r\n } else if (kThematicGradientMode_SteppedWithDelimiter == gradientMode) {\r\n float coord = v_thematicIndex * stepCount;\r\n float line = abs(fract(coord - 0.5) - 0.5) / _universal_fwidth(coord);\r\n float value = min(line, 1.0);\r\n rgba.rgb *= value;\r\n }\r\n\r\n return rgba;\r\n`;\r\n\r\n// fwidth does not function for point clouds, so we work around the limitation with a less-than-ideal rendering of isolines and delimiters\r\n// using a tolerance not based on neighboring fragments.\r\nconst delimiterToleranceForPointClouds = `0.025`; // / (stepCount * 40.0)`;\r\nconst applyThematicColorPostludeForPointClouds = `\r\n float gradientMode = u_thematicSettings.x;\r\n float stepCount = u_thematicSettings.z;\r\n\r\n vec4 rgba = vec4((kThematicGradientMode_IsoLines == gradientMode) ? getIsoLineColor(ndx, stepCount) : getColor(ndx), baseColor.a);\r\n rgba = mix(rgba, baseColor, u_thematicColorMix);\r\n\r\n if (kThematicGradientMode_IsoLines == gradientMode) {\r\n float coord = v_thematicIndex * stepCount;\r\n float line = abs(fract(coord - 0.5) - 0.5);\r\n if (line > ${delimiterToleranceForPointClouds})\r\n discard;\r\n } else if (kThematicGradientMode_SteppedWithDelimiter == gradientMode) {\r\n float coord = v_thematicIndex * stepCount;\r\n float line = abs(fract(coord - 0.5) - 0.5);\r\n float value = min(line, 1.0);\r\n if (line < ${delimiterToleranceForPointClouds} && value < 1.0)\r\n rgba.rgb *= 0.0;\r\n }\r\n\r\n return rgba;\r\n`;\r\n\r\nfunction _getShader(isPointCloud: boolean) {\r\n return isPointCloud ?\r\n applyThematicColorPrelude + applyThematicColorPostludeForPointClouds : // do not include slope and hillshade for point clouds\r\n applyThematicColorPrelude + slopeAndHillShadeShader + applyThematicColorPostlude; // include all modes for everything else\r\n}\r\n\r\n// Compute the value for the varying to be interpolated to the fragment shader in order to access the color in the thematic gradient texture\r\n// We will project a vector onto another vector using this equation: proju = (v . u) / (v . v) * v\r\nexport function getComputeThematicIndex(instanced: boolean, skipSlopeAndHillShade: boolean, decodeNormal: boolean): string {\r\n const modelPos = instanced ? \"(g_instancedRtcMatrix * rawPosition)\" : \"rawPosition\";\r\n const heightMode = `\r\n if (kThematicDisplayMode_Height == u_thematicDisplayMode) {\r\n vec3 u = (u_modelToWorld * ${modelPos}).xyz;\r\n vec3 v = u_thematicAxis;\r\n vec3 proju = (dot(v, u) / dot(v, v)) * v;\r\n vec3 a = v * u_thematicRange.s;\r\n vec3 b = v * u_thematicRange.t;\r\n vec3 c = proju;\r\n v_thematicIndex = findFractionalPositionOnLine(a, b, c);\r\n }`;\r\n const hillShadeMode = ` else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {\r\n v_thematicIndex = computeSurfaceNormal().z;\r\n }`;\r\n const hillShadeMode2 = ` else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {\r\n v_thematicIndex = g_hillshadeIndex;\r\n }`;\r\n return skipSlopeAndHillShade ? heightMode : heightMode + (decodeNormal ? hillShadeMode : hillShadeMode2);\r\n}\r\n\r\n// Determine the fractional position of c on line segment ab. Assumes the three points are aligned on the same axis.\r\nconst findFractionalPositionOnLine = `\r\n float abDist = distance(a, b);\r\n return dot(b - a, c - a) / (abDist * abDist);\r\n`;\r\n\r\nfunction addThematicDisplayModeConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kThematicDisplayMode_Height\", ThematicDisplayMode.Height.toFixed(1));\r\n builder.addDefine(\"kThematicDisplayMode_InverseDistanceWeightedSensors\", ThematicDisplayMode.InverseDistanceWeightedSensors.toFixed(1));\r\n builder.addDefine(\"kThematicDisplayMode_Slope\", ThematicDisplayMode.Slope.toFixed(1));\r\n builder.addDefine(\"kThematicDisplayMode_HillShade\", ThematicDisplayMode.HillShade.toFixed(1));\r\n}\r\n\r\nfunction addThematicGradientModeConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kThematicGradientMode_Smooth\", ThematicGradientMode.Smooth.toFixed(1));\r\n builder.addDefine(\"kThematicGradientMode_Stepped\", ThematicGradientMode.Stepped.toFixed(1));\r\n builder.addDefine(\"kThematicGradientMode_SteppedWithDelimiter\", ThematicGradientMode.SteppedWithDelimiter.toFixed(1));\r\n builder.addDefine(\"kThematicGradientMode_IsoLines\", ThematicGradientMode.IsoLines.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addThematicDisplay(builder: ProgramBuilder, isForPointClouds = false, isForTerrainMesh = false) {\r\n const frag = builder.frag;\r\n const vert = builder.vert;\r\n\r\n addRenderPass(builder.frag);\r\n\r\n if (!isForPointClouds && !isForTerrainMesh)\r\n addProjectionMatrix(vert);\r\n\r\n addEyeSpace(builder);\r\n\r\n if (vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(vert);\r\n\r\n vert.addFunction(\"float findFractionalPositionOnLine(vec3 a, vec3 b, vec3 c)\", findFractionalPositionOnLine);\r\n\r\n vert.addUniform(\"u_modelToWorld\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_modelToWorld\", (uniform, params) => {\r\n params.target.uniforms.branch.bindModelToWorldTransform(uniform, params.geometry, false);\r\n });\r\n });\r\n\r\n builder.addUniform(\"u_thematicRange\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicRange\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindRange(uniform);\r\n });\r\n });\r\n\r\n builder.addUniform(\"u_thematicAxis\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicAxis\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindAxis(uniform);\r\n });\r\n });\r\n\r\n if (!isForPointClouds) {\r\n builder.addUniform(\"u_thematicSunDirection\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicSunDirection\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindSunDirection(uniform);\r\n });\r\n });\r\n }\r\n\r\n addThematicGradientModeConstants(builder.frag);\r\n\r\n addThematicDisplayModeConstants(builder.frag);\r\n addThematicDisplayModeConstants(builder.vert);\r\n\r\n builder.addUniform(\"u_thematicDisplayMode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicDisplayMode\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindDisplayMode(uniform);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_marginColor\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_marginColor\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindMarginColor(uniform);\r\n });\r\n });\r\n\r\n // gradientMode, distanceCutoff, stepCount\r\n builder.addUniform(\"u_thematicSettings\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicSettings\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindFragSettings(uniform);\r\n });\r\n });\r\n\r\n if (isForPointClouds || isForTerrainMesh) {\r\n builder.frag.addUniform(\"u_thematicColorMix\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicColorMix\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.uniforms.thematic.thematicDisplay?.gradientSettings.colorMix || 0.0);\r\n });\r\n });\r\n } else {\r\n builder.frag.addUniform(\"u_thematicColorMix\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicColorMix\", (uniform, _params) => {\r\n uniform.setUniform1f(0.0);\r\n });\r\n });\r\n }\r\n\r\n frag.addUniform(\"u_numSensors\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_numSensors\", (uniform, params) => {\r\n if (params.target.wantThematicSensors) {\r\n if (params.target.uniforms.thematic.wantGlobalSensorTexture)\r\n params.target.uniforms.thematic.bindNumSensors(uniform);\r\n else // we are batching separate sensor textures per-tile; use the number of sensors from the batch\r\n params.target.uniforms.batch.bindNumThematicSensors(uniform);\r\n } else {\r\n uniform.setUniform1i(0);\r\n }\r\n });\r\n });\r\n\r\n frag.addUniform(\"s_sensorSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_sensorSampler\", (uniform, params) => {\r\n if (params.target.wantThematicSensors) {\r\n if (params.target.uniforms.thematic.wantGlobalSensorTexture) {\r\n params.target.uniforms.thematic.bindSensors(uniform);\r\n } else { // we are batching separate sensor textures per-tile; bind the batch's sensor texture\r\n params.target.uniforms.batch.bindThematicSensors(uniform);\r\n }\r\n } else {\r\n System.instance.ensureSamplerBound(uniform, TextureUnit.ThematicSensors);\r\n }\r\n });\r\n });\r\n\r\n if (!isForPointClouds) { // allows us to know when to discard between isolines to make them pickable\r\n builder.frag.addUniform(\"u_discardBetweenIsolines\", VariableType.Boolean, (prog) => {\r\n prog.addProgramUniform(\"u_discardBetweenIsolines\", (uniform, params) => {\r\n uniform.setUniform1i(params.target.isReadPixelsInProgress ? 1 : 0);\r\n });\r\n });\r\n }\r\n\r\n const isWebGL2 = System.instance.capabilities.isWebGL2;\r\n if (isWebGL2) {\r\n frag.addFunction(fwidthWhenAvailable);\r\n } else if (System.instance.capabilities.supportsStandardDerivatives) {\r\n frag.addExtension(\"GL_OES_standard_derivatives\");\r\n frag.addFunction(fwidthWhenAvailable);\r\n } else {\r\n frag.addFunction(fwidthWhenNotAvailable);\r\n }\r\n\r\n if (System.instance.capabilities.supportsTextureFloat) {\r\n frag.addFunction(getSensorFloat);\r\n } else {\r\n frag.addFunction(unpackFloat);\r\n frag.addFunction(unpackSensor);\r\n }\r\n\r\n frag.addFunction(getColor);\r\n frag.addFunction(getIsoLineColor);\r\n\r\n frag.set(FragmentShaderComponent.ApplyThematicDisplay, _getShader(isForPointClouds));\r\n}\r\n"]}
1
+ {"version":3,"file":"Thematic.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Thematic.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { ThematicDisplayMode, ThematicGradientMode } from \"@itwin/core-common\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { unpackFloat } from \"./Clipping\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\nimport { addInstancedRtcMatrix, addProjectionMatrix } from \"./Vertex\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { addEyeSpace } from \"./Common\";\r\n\r\nconst getSensorFloat = `\r\nvec4 getSensor(int index) {\r\n float x = 0.5;\r\n float y = (float(index) + 0.5) / float(u_numSensors);\r\n return TEXTURE(s_sensorSampler, vec2(x, y));\r\n}\r\n`;\r\n\r\nconst unpackSensor = `\r\nvec4 getSensor(int index) {\r\n float y = (float(index) + 0.5) / float(u_numSensors);\r\n float sx = 0.25;\r\n vec2 tc = vec2(0.125, y);\r\n float posX = unpackFloat(TEXTURE(s_sensorSampler, tc));\r\n tc.x += sx;\r\n float posY = unpackFloat(TEXTURE(s_sensorSampler, tc));\r\n tc.x += sx;\r\n float posZ = unpackFloat(TEXTURE(s_sensorSampler, tc));\r\n tc.x += sx;\r\n float value = unpackFloat(TEXTURE(s_sensorSampler, tc));\r\n return vec4(posX, posY, posZ, value);\r\n}\r\n`;\r\n\r\n// Access a gradient texture at the specified index.\r\n// A stepped gradient texture is arranged with single unique color pixels for each step. The dimension of a stepped gradient texture is stepCount.\r\n// A smooth gradient texture is arranged with blended color pixels across the entire span of the texture. The dimension of a smooth gradient texture is the system's maximum texture size.\r\nconst getColor = `\r\nvec3 getColor(float ndx) {\r\n if (ndx < 0.0 || ndx > 1.0)\r\n return u_marginColor;\r\n\r\n return TEXTURE(s_texture, vec2(0.0, ndx)).rgb;\r\n}\r\n`;\r\n\r\n// Access a stepped gradient texture at the specified index taking into account isolines.\r\n// The texture format is exactly as described above for stepped mode. We just access the gradient differently,\r\n// specifically to ensure that the texels sampled result in lines of overall singular colors - no stepping into the\r\n// neighboring bands.\r\nconst getIsoLineColor = `\r\nvec3 getIsoLineColor(float ndx, float stepCount) {\r\n if (ndx < 0.01 || ndx > 0.99)\r\n return u_marginColor;\r\n\r\n ndx += 0.5 / stepCount; // center on step pixels\r\n return TEXTURE(s_texture, vec2(0.0, ndx)).rgb;\r\n}\r\n`;\r\n\r\nconst fwidthWhenAvailable = `\\nfloat _universal_fwidth(float coord) { return fwidth(coord); }\\n`;\r\nconst fwidthWhenNotAvailable = `\\nfloat _universal_fwidth(float coord) { return coord; }\\n`; // ###TODO: can we do something reasonable in this case?\r\n\r\nconst slopeAndHillShadeShader = ` else if (kThematicDisplayMode_Slope == u_thematicDisplayMode) {\r\n float d = dot(g_normal, u_thematicAxis);\r\n if (d < 0.0)\r\n d = -d;\r\n\r\n // The range of d is now 0 to 1 (90 degrees to 0 degrees).\r\n // However, the range from 0 to 1 is not linear. Therefore, we use acos() to find the actual angle in radians.\r\n d = acos(d);\r\n\r\n // range of d is currently 1.5708 to 0 radians.\r\n if (d < u_thematicRange.x || d > u_thematicRange.y)\r\n d = -1.0; // use marginColor if outside the requested range\r\n else { // convert d from radians to 0 to 1 using requested range\r\n d -= u_thematicRange.x;\r\n d /= (u_thematicRange.y - u_thematicRange.x);\r\n }\r\n\r\n ndx = d;\r\n } else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {\r\n float d = dot(g_normal, u_thematicSunDirection);\r\n\r\n ndx = max(0.0, d);\r\n }`;\r\n\r\n// Access the appropriate gradient texel for a particular index based on display mode and gradient mode.\r\nconst applyThematicColorPrelude = `\r\n float ndx = v_thematicIndex;\r\n\r\n if (kThematicDisplayMode_InverseDistanceWeightedSensors == u_thematicDisplayMode) {\r\n float sensorSum = 0.0;\r\n float contributionSum = 0.0;\r\n\r\n vec3 sensorPos;\r\n float sensorValue;\r\n float sensorWeight;\r\n\r\n ndx = -1.0; // default index = marginColor\r\n\r\n float distanceCutoff = u_thematicSettings.y;\r\n\r\n for (int i = 0; i < 8192; i++) { // ###TODO: set maximum number of sensors during an incremental form of shader construction\r\n if (i >= u_numSensors)\r\n break;\r\n\r\n vec4 sensor = getSensor(i);\r\n\r\n float dist = distance(v_eyeSpace, sensor.xyz);\r\n\r\n bool skipThisSensor = (distanceCutoff > 0.0 && dist > distanceCutoff);\r\n if (!skipThisSensor) {\r\n float contribution = 1.0 / pow(dist, 2.0);\r\n sensorSum += sensor.w * contribution;\r\n contributionSum += contribution;\r\n }\r\n }\r\n\r\n if (contributionSum > 0.0) // avoid division by zero\r\n ndx = sensorSum / contributionSum;\r\n }`;\r\n\r\nconst applyThematicColorPostlude = `\r\n float gradientMode = u_thematicSettings.x;\r\n float stepCount = u_thematicSettings.z;\r\n\r\n vec4 rgba = vec4((kThematicGradientMode_IsoLines == gradientMode) ? getIsoLineColor(ndx, stepCount) : getColor(ndx), baseColor.a);\r\n rgba = mix(rgba, baseColor, u_thematicColorMix);\r\n\r\n if (kThematicGradientMode_IsoLines == gradientMode) {\r\n float coord = v_thematicIndex * stepCount;\r\n float line = abs(fract(coord - 0.5) - 0.5) / _universal_fwidth(coord);\r\n rgba.a = 1.0 - min(line, 1.0);\r\n if (u_discardBetweenIsolines && 0.0 == rgba.a)\r\n discard;\r\n } else if (kThematicGradientMode_SteppedWithDelimiter == gradientMode) {\r\n float coord = v_thematicIndex * stepCount;\r\n float line = abs(fract(coord - 0.5) - 0.5) / _universal_fwidth(coord);\r\n float value = min(line, 1.0);\r\n rgba.rgb *= value;\r\n }\r\n\r\n return rgba;\r\n`;\r\n\r\n// fwidth does not function for point clouds, so we work around the limitation with a less-than-ideal rendering of isolines and delimiters\r\n// using a tolerance not based on neighboring fragments.\r\nconst delimiterToleranceForPointClouds = `0.025`; // / (stepCount * 40.0)`;\r\nconst applyThematicColorPostludeForPointClouds = `\r\n float gradientMode = u_thematicSettings.x;\r\n float stepCount = u_thematicSettings.z;\r\n\r\n vec4 rgba = vec4((kThematicGradientMode_IsoLines == gradientMode) ? getIsoLineColor(ndx, stepCount) : getColor(ndx), baseColor.a);\r\n rgba = mix(rgba, baseColor, u_thematicColorMix);\r\n\r\n if (kThematicGradientMode_IsoLines == gradientMode) {\r\n float coord = v_thematicIndex * stepCount;\r\n float line = abs(fract(coord - 0.5) - 0.5);\r\n if (line > ${delimiterToleranceForPointClouds})\r\n discard;\r\n } else if (kThematicGradientMode_SteppedWithDelimiter == gradientMode) {\r\n float coord = v_thematicIndex * stepCount;\r\n float line = abs(fract(coord - 0.5) - 0.5);\r\n float value = min(line, 1.0);\r\n if (line < ${delimiterToleranceForPointClouds} && value < 1.0)\r\n rgba.rgb *= 0.0;\r\n }\r\n\r\n return rgba;\r\n`;\r\n\r\nfunction _getShader(isPointCloud: boolean) {\r\n return isPointCloud ?\r\n applyThematicColorPrelude + applyThematicColorPostludeForPointClouds : // do not include slope and hillshade for point clouds\r\n applyThematicColorPrelude + slopeAndHillShadeShader + applyThematicColorPostlude; // include all modes for everything else\r\n}\r\n\r\n// Compute the value for the varying to be interpolated to the fragment shader in order to access the color in the thematic gradient texture\r\n// We will project a vector onto another vector using this equation: proju = (v . u) / (v . v) * v\r\nexport function getComputeThematicIndex(instanced: boolean, skipSlopeAndHillShade: boolean, decodeNormal: boolean): string {\r\n const modelPos = instanced ? \"(g_instancedRtcMatrix * rawPosition)\" : \"rawPosition\";\r\n const heightMode = `\r\n if (kThematicDisplayMode_Height == u_thematicDisplayMode) {\r\n vec3 u = (u_modelToWorld * ${modelPos}).xyz;\r\n vec3 v = u_thematicAxis;\r\n vec3 proju = (dot(v, u) / dot(v, v)) * v;\r\n vec3 a = v * u_thematicRange.s;\r\n vec3 b = v * u_thematicRange.t;\r\n vec3 c = proju;\r\n v_thematicIndex = findFractionalPositionOnLine(a, b, c);\r\n }`;\r\n const hillShadeMode = ` else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {\r\n v_thematicIndex = computeSurfaceNormal().z;\r\n }`;\r\n const hillShadeMode2 = ` else if (kThematicDisplayMode_HillShade == u_thematicDisplayMode) {\r\n v_thematicIndex = g_hillshadeIndex;\r\n }`;\r\n return skipSlopeAndHillShade ? heightMode : heightMode + (decodeNormal ? hillShadeMode : hillShadeMode2);\r\n}\r\n\r\n// Determine the fractional position of c on line segment ab. Assumes the three points are aligned on the same axis.\r\nconst findFractionalPositionOnLine = `\r\n float abDist = distance(a, b);\r\n return dot(b - a, c - a) / (abDist * abDist);\r\n`;\r\n\r\nfunction addThematicDisplayModeConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kThematicDisplayMode_Height\", ThematicDisplayMode.Height.toFixed(1));\r\n builder.addDefine(\"kThematicDisplayMode_InverseDistanceWeightedSensors\", ThematicDisplayMode.InverseDistanceWeightedSensors.toFixed(1));\r\n builder.addDefine(\"kThematicDisplayMode_Slope\", ThematicDisplayMode.Slope.toFixed(1));\r\n builder.addDefine(\"kThematicDisplayMode_HillShade\", ThematicDisplayMode.HillShade.toFixed(1));\r\n}\r\n\r\nfunction addThematicGradientModeConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kThematicGradientMode_Smooth\", ThematicGradientMode.Smooth.toFixed(1));\r\n builder.addDefine(\"kThematicGradientMode_Stepped\", ThematicGradientMode.Stepped.toFixed(1));\r\n builder.addDefine(\"kThematicGradientMode_SteppedWithDelimiter\", ThematicGradientMode.SteppedWithDelimiter.toFixed(1));\r\n builder.addDefine(\"kThematicGradientMode_IsoLines\", ThematicGradientMode.IsoLines.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addThematicDisplay(builder: ProgramBuilder, isForPointClouds = false, isForTerrainMesh = false) {\r\n const frag = builder.frag;\r\n const vert = builder.vert;\r\n\r\n addRenderPass(builder.frag);\r\n\r\n if (!isForPointClouds && !isForTerrainMesh)\r\n addProjectionMatrix(vert);\r\n\r\n addEyeSpace(builder);\r\n\r\n if (vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(vert);\r\n\r\n vert.addFunction(\"float findFractionalPositionOnLine(vec3 a, vec3 b, vec3 c)\", findFractionalPositionOnLine);\r\n\r\n vert.addUniform(\"u_modelToWorld\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_modelToWorld\", (uniform, params) => {\r\n params.target.uniforms.branch.bindModelToWorldTransform(uniform, params.geometry, false);\r\n });\r\n });\r\n\r\n builder.addUniform(\"u_thematicRange\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicRange\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindRange(uniform);\r\n });\r\n });\r\n\r\n builder.addUniform(\"u_thematicAxis\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicAxis\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindAxis(uniform);\r\n });\r\n });\r\n\r\n if (!isForPointClouds) {\r\n builder.addUniform(\"u_thematicSunDirection\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicSunDirection\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindSunDirection(uniform);\r\n });\r\n });\r\n }\r\n\r\n addThematicGradientModeConstants(builder.frag);\r\n\r\n addThematicDisplayModeConstants(builder.frag);\r\n addThematicDisplayModeConstants(builder.vert);\r\n\r\n builder.addUniform(\"u_thematicDisplayMode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicDisplayMode\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindDisplayMode(uniform);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_marginColor\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_marginColor\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindMarginColor(uniform);\r\n });\r\n });\r\n\r\n // gradientMode, distanceCutoff, stepCount\r\n builder.addUniform(\"u_thematicSettings\", VariableType.Vec3, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicSettings\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindFragSettings(uniform);\r\n });\r\n });\r\n\r\n if (isForPointClouds || isForTerrainMesh) {\r\n builder.frag.addUniform(\"u_thematicColorMix\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicColorMix\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.uniforms.thematic.thematicDisplay?.gradientSettings.colorMix || 0.0);\r\n });\r\n });\r\n } else {\r\n builder.frag.addUniform(\"u_thematicColorMix\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_thematicColorMix\", (uniform, _params) => {\r\n uniform.setUniform1f(0.0);\r\n });\r\n });\r\n }\r\n\r\n frag.addUniform(\"u_numSensors\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_numSensors\", (uniform, params) => {\r\n if (params.target.wantThematicSensors) {\r\n if (params.target.uniforms.thematic.wantGlobalSensorTexture)\r\n params.target.uniforms.thematic.bindNumSensors(uniform);\r\n else // we are batching separate sensor textures per-tile; use the number of sensors from the batch\r\n params.target.uniforms.batch.bindNumThematicSensors(uniform);\r\n } else {\r\n uniform.setUniform1i(0);\r\n }\r\n });\r\n });\r\n\r\n frag.addUniform(\"s_sensorSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_sensorSampler\", (uniform, params) => {\r\n if (params.target.wantThematicSensors) {\r\n if (params.target.uniforms.thematic.wantGlobalSensorTexture) {\r\n params.target.uniforms.thematic.bindSensors(uniform);\r\n } else { // we are batching separate sensor textures per-tile; bind the batch's sensor texture\r\n params.target.uniforms.batch.bindThematicSensors(uniform);\r\n }\r\n } else {\r\n System.instance.ensureSamplerBound(uniform, TextureUnit.ThematicSensors);\r\n }\r\n });\r\n });\r\n\r\n if (!isForPointClouds) { // allows us to know when to discard between isolines to make them pickable\r\n builder.frag.addUniform(\"u_discardBetweenIsolines\", VariableType.Boolean, (prog) => {\r\n prog.addProgramUniform(\"u_discardBetweenIsolines\", (uniform, params) => {\r\n uniform.setUniform1i(params.target.isReadPixelsInProgress ? 1 : 0);\r\n });\r\n });\r\n }\r\n\r\n const isWebGL2 = System.instance.capabilities.isWebGL2;\r\n if (isWebGL2) {\r\n frag.addFunction(fwidthWhenAvailable);\r\n } else if (System.instance.capabilities.supportsStandardDerivatives) {\r\n frag.addExtension(\"GL_OES_standard_derivatives\");\r\n frag.addFunction(fwidthWhenAvailable);\r\n } else {\r\n frag.addFunction(fwidthWhenNotAvailable);\r\n }\r\n\r\n if (System.instance.capabilities.supportsTextureFloat) {\r\n frag.addFunction(getSensorFloat);\r\n } else {\r\n frag.addFunction(unpackFloat);\r\n frag.addFunction(unpackSensor);\r\n }\r\n\r\n frag.addFunction(getColor);\r\n frag.addFunction(getIsoLineColor);\r\n\r\n frag.set(FragmentShaderComponent.ApplyThematicDisplay, _getShader(isForPointClouds));\r\n}\r\n"]}
@@ -309,7 +309,7 @@ interface GltfMaterialPbrMetallicRoughness extends GltfProperty {
309
309
  }
310
310
  interface Gltf2Material extends GltfChildOfRootProperty {
311
311
  pbrMetallicRoughness?: GltfMaterialPbrMetallicRoughness;
312
- normalTexture?: unknown;
312
+ normalTexture?: GltfTextureInfo;
313
313
  occlusionTexture?: unknown;
314
314
  emissiveTexture?: GltfTextureInfo;
315
315
  emissiveFactor?: number[];
@@ -604,7 +604,9 @@ export declare abstract class GltfReader {
604
604
  [k: string]: any;
605
605
  }, accessorName: string, type: GltfDataType): GltfBufferData | undefined;
606
606
  protected readFeatureIndices(_json: any): number[] | undefined;
607
+ private extractId;
607
608
  private extractTextureId;
609
+ private extractNormalMapId;
608
610
  private isMaterialTransparent;
609
611
  protected createDisplayParams(material: GltfMaterial, hasBakedLighting: boolean): DisplayParams | undefined;
610
612
  private readMeshPrimitives;
@@ -649,7 +651,7 @@ export declare abstract class GltfReader {
649
651
  /** Exposed strictly for testing. */
650
652
  getTextureType(sampler?: GltfSampler): RenderTexture.Type;
651
653
  private resolveTexture;
652
- protected findTextureMapping(id: string, isTransparent: boolean): TextureMapping | undefined;
654
+ protected findTextureMapping(id: string | undefined, isTransparent: boolean, normalMapId: string | undefined): TextureMapping | undefined;
653
655
  }
654
656
  /** Arguments supplied to [[readGltfGraphics]] to produce a [[RenderGraphic]] from a [glTF](https://www.khronos.org/gltf/) asset.
655
657
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"GltfReader.d.ts","sourceRoot":"","sources":["../../../src/tile/GltfReader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GltfReader.d.ts","sourceRoot":"","sources":["../../../src/tile/GltfReader.ts"],"names":[],"mappings":"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"}
@@ -710,23 +710,23 @@ export class GltfReader {
710
710
  return undefined !== view ? view.toBufferData(type) : undefined;
711
711
  }
712
712
  readFeatureIndices(_json) { return undefined; }
713
+ extractId(value) {
714
+ switch (typeof value) {
715
+ case "string":
716
+ return value;
717
+ case "number":
718
+ return value.toString();
719
+ default:
720
+ return undefined;
721
+ }
722
+ }
713
723
  extractTextureId(material) {
714
724
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
715
725
  if (typeof material !== "object")
716
726
  return undefined;
717
- const extractId = (value) => {
718
- switch (typeof value) {
719
- case "string":
720
- return value;
721
- case "number":
722
- return value.toString();
723
- default:
724
- return undefined;
725
- }
726
- };
727
727
  // Bimium's shader value...almost certainly obsolete at this point.
728
728
  if (isGltf1Material(material))
729
- return (_a = material.diffuse) !== null && _a !== void 0 ? _a : extractId((_b = material.values) === null || _b === void 0 ? void 0 : _b.tex);
729
+ return (_a = material.diffuse) !== null && _a !== void 0 ? _a : this.extractId((_b = material.values) === null || _b === void 0 ? void 0 : _b.tex);
730
730
  // KHR_techniques_webgl extension
731
731
  const techniques = (_d = (_c = this._glTF.extensions) === null || _c === void 0 ? void 0 : _c.KHR_techniques_webgl) === null || _d === void 0 ? void 0 : _d.techniques;
732
732
  const ext = Array.isArray(techniques) ? (_e = material.extensions) === null || _e === void 0 ? void 0 : _e.KHR_techniques_webgl : undefined;
@@ -736,12 +736,20 @@ export class GltfReader {
736
736
  for (const uniformName of Object.keys(uniforms)) {
737
737
  const uniform = uniforms[uniformName];
738
738
  if (typeof uniform === "object" && uniform.type === GltfDataType.Sampler2d)
739
- return extractId((_f = ext.values[uniformName]) === null || _f === void 0 ? void 0 : _f.index);
739
+ return this.extractId((_f = ext.values[uniformName]) === null || _f === void 0 ? void 0 : _f.index);
740
740
  }
741
741
  }
742
742
  }
743
- const id = extractId((_h = (_g = material.pbrMetallicRoughness) === null || _g === void 0 ? void 0 : _g.baseColorTexture) === null || _h === void 0 ? void 0 : _h.index);
744
- return id !== null && id !== void 0 ? id : extractId((_j = material.emissiveTexture) === null || _j === void 0 ? void 0 : _j.index);
743
+ const id = this.extractId((_h = (_g = material.pbrMetallicRoughness) === null || _g === void 0 ? void 0 : _g.baseColorTexture) === null || _h === void 0 ? void 0 : _h.index);
744
+ return id !== null && id !== void 0 ? id : this.extractId((_j = material.emissiveTexture) === null || _j === void 0 ? void 0 : _j.index);
745
+ }
746
+ extractNormalMapId(material) {
747
+ var _a;
748
+ if (typeof material !== "object")
749
+ return undefined;
750
+ if (isGltf1Material(material))
751
+ return undefined;
752
+ return this.extractId((_a = material.normalTexture) === null || _a === void 0 ? void 0 : _a.index);
745
753
  }
746
754
  isMaterialTransparent(material) {
747
755
  var _a, _b;
@@ -762,9 +770,15 @@ export class GltfReader {
762
770
  createDisplayParams(material, hasBakedLighting) {
763
771
  const isTransparent = this.isMaterialTransparent(material);
764
772
  const textureId = this.extractTextureId(material);
765
- const textureMapping = undefined !== textureId ? this.findTextureMapping(textureId, isTransparent) : undefined;
773
+ const normalMapId = this.extractNormalMapId(material);
774
+ const textureMapping = (undefined !== textureId || undefined !== normalMapId) ? this.findTextureMapping(textureId, isTransparent, normalMapId) : undefined;
766
775
  const color = colorFromMaterial(material, isTransparent);
767
- return new DisplayParams(DisplayParams.Type.Mesh, color, color, 1, LinePixels.Solid, FillFlags.Always, undefined, undefined, hasBakedLighting, textureMapping);
776
+ let renderMaterial;
777
+ if (undefined !== textureMapping && undefined !== textureMapping.normalMapParams) {
778
+ const args = { diffuse: { color }, specular: { color: ColorDef.white }, textureMapping };
779
+ renderMaterial = IModelApp.renderSystem.createRenderMaterial(args);
780
+ }
781
+ return new DisplayParams(DisplayParams.Type.Mesh, color, color, 1, LinePixels.Solid, FillFlags.Always, renderMaterial, undefined, hasBakedLighting, textureMapping);
768
782
  }
769
783
  readMeshPrimitives(node, featureTable, thisTransform, thisBias) {
770
784
  const meshes = [];
@@ -1341,11 +1355,38 @@ export class GltfReader {
1341
1355
  });
1342
1356
  return renderTexture !== null && renderTexture !== void 0 ? renderTexture : false;
1343
1357
  }
1344
- findTextureMapping(id, isTransparent) {
1345
- let texture = this._resolvedTextures.get({ id, isTransparent });
1346
- if (undefined === texture)
1347
- this._resolvedTextures.set({ id, isTransparent }, texture = this.resolveTexture(id, isTransparent));
1348
- return texture ? new TextureMapping(texture, new TextureMapping.Params()) : undefined;
1358
+ findTextureMapping(id, isTransparent, normalMapId) {
1359
+ if (undefined === id && undefined === normalMapId)
1360
+ return undefined;
1361
+ let texture;
1362
+ if (undefined !== id) {
1363
+ texture = this._resolvedTextures.get({ id, isTransparent });
1364
+ if (undefined === texture)
1365
+ this._resolvedTextures.set({ id, isTransparent }, texture = this.resolveTexture(id, isTransparent));
1366
+ }
1367
+ let normalMap;
1368
+ if (undefined !== normalMapId) {
1369
+ normalMap = this._resolvedTextures.get({ id: normalMapId, isTransparent: false });
1370
+ if (undefined === normalMap)
1371
+ this._resolvedTextures.set({ id: normalMapId, isTransparent: false }, normalMap = this.resolveTexture(normalMapId, false));
1372
+ }
1373
+ let nMap;
1374
+ if (normalMap) {
1375
+ if (texture) {
1376
+ nMap = {
1377
+ normalMap,
1378
+ };
1379
+ }
1380
+ else {
1381
+ texture = normalMap;
1382
+ nMap = {};
1383
+ }
1384
+ }
1385
+ if (!texture)
1386
+ return undefined;
1387
+ const textureMapping = new TextureMapping(texture, new TextureMapping.Params());
1388
+ textureMapping.normalMapParams = nMap;
1389
+ return textureMapping;
1349
1390
  }
1350
1391
  }
1351
1392
  /** Produce a [[RenderGraphic]] from a [glTF](https://www.khronos.org/gltf/) asset suitable for use in [view decorations]($docs/learning/frontend/ViewDecorations).