@itwin/core-frontend 3.4.0-dev.1 → 3.4.0-dev.7

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 (38) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/lib/cjs/IModelConnection.d.ts +9 -2
  3. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  4. package/lib/cjs/IModelConnection.js +9 -0
  5. package/lib/cjs/IModelConnection.js.map +1 -1
  6. package/lib/cjs/PerModelCategoryVisibility.d.ts +17 -0
  7. package/lib/cjs/PerModelCategoryVisibility.d.ts.map +1 -1
  8. package/lib/cjs/PerModelCategoryVisibility.js +63 -19
  9. package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
  10. package/lib/cjs/SubCategoriesCache.d.ts +3 -12
  11. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  12. package/lib/cjs/SubCategoriesCache.js +14 -37
  13. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  14. package/lib/cjs/ViewState.d.ts.map +1 -1
  15. package/lib/cjs/ViewState.js +6 -6
  16. package/lib/cjs/ViewState.js.map +1 -1
  17. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  18. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +4 -1
  19. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  20. package/lib/esm/IModelConnection.d.ts +9 -2
  21. package/lib/esm/IModelConnection.d.ts.map +1 -1
  22. package/lib/esm/IModelConnection.js +9 -0
  23. package/lib/esm/IModelConnection.js.map +1 -1
  24. package/lib/esm/PerModelCategoryVisibility.d.ts +17 -0
  25. package/lib/esm/PerModelCategoryVisibility.d.ts.map +1 -1
  26. package/lib/esm/PerModelCategoryVisibility.js +63 -19
  27. package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
  28. package/lib/esm/SubCategoriesCache.d.ts +3 -12
  29. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  30. package/lib/esm/SubCategoriesCache.js +16 -39
  31. package/lib/esm/SubCategoriesCache.js.map +1 -1
  32. package/lib/esm/ViewState.d.ts.map +1 -1
  33. package/lib/esm/ViewState.js +6 -6
  34. package/lib/esm/ViewState.js.map +1 -1
  35. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  36. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +4 -1
  37. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  38. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"AmbientOcclusion.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/AmbientOcclusion.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA0LjD,gBAAgB;AAChB,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa,CA+FlF"}
1
+ {"version":3,"file":"AmbientOcclusion.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/AmbientOcclusion.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA6LjD,gBAAgB;AAChB,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa,CA+FlF"}
@@ -64,7 +64,7 @@ const computeAmbientOcclusion = `
64
64
  float bias = u_hbaoSettings.x; // Represents an angle in radians. If the dot product between the normal of the sample and the vector to the camera is less than this value, sampling stops in the current direction. This is used to remove shadows from near planar edges.
65
65
  float zLengthCap = u_hbaoSettings.y; // If the distance in linear Z from the current sample to first sample is greater than this value, sampling stops in the current direction.
66
66
  float intensity = u_hbaoSettings.z; // Raise the final occlusion to the power of this value. Larger values make the ambient shadows darker.
67
- float texelStepSize = u_hbaoSettings.w; // Indicates the distance to step toward the next texel sample in the current direction.
67
+ float texelStepSize = clamp(u_hbaoSettings.w * linearDepth, 1.0, u_hbaoSettings.w); // Indicates the distance to step toward the next texel sample in the current direction.
68
68
 
69
69
  float tOcclusion = 0.0;
70
70
 
@@ -109,6 +109,9 @@ const computeAmbientOcclusion = `
109
109
  tOcclusion += curOcclusion;
110
110
  }
111
111
 
112
+ float distanceFadeFactor = kFrustumType_Perspective == u_frustum.z ? 1.0 - pow(clamp(nonLinearDepth / u_maxDistance, 0.0, 1.0), 4.0) : 1.0;
113
+ tOcclusion *= distanceFadeFactor;
114
+
112
115
  tOcclusion /= 4.0;
113
116
  tOcclusion = 1.0 - clamp(tOcclusion, 0.0, 1.0);
114
117
  tOcclusion = pow(tOcclusion, intensity);
@@ -1 +1 @@
1
- {"version":3,"file":"AmbientOcclusion.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/AmbientOcclusion.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\n// portions adapted from Cesium.js Copyright 2011 - 2017 Cesium Contributors\r\n\r\nimport { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { AmbientOcclusionGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { System } from \"../System\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addFrustum } from \"./Common\";\r\nimport { decodeDepthRgb } from \"./Decode\";\r\nimport { addRenderOrderConstants, readDepthAndOrder } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords, assignFragColor } from \"./Fragment\";\r\nimport { addViewport } from \"./Viewport\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\n// 'PB' indicates a shader variation when only the pickbuffer is available\r\n// 'DB' indicates a shader variation when the real floating point depth buffer is available.\r\n\r\nconst computeAmbientOcclusionPrefixPB = `\r\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\nvec2 depthAndOrder = readDepthAndOrder(tc);\r\nfloat db = depthAndOrder.y;\r\n`;\r\n\r\nconst computeAmbientOcclusionPrefixDB = `\r\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\nvec2 depthAndOrder = readDepthAndOrder(tc);\r\nfloat db = readDepth(tc);\r\n`;\r\n\r\n// This outputs 1 for unlit surfaces, and for polylines and point strings.\r\n// Otherwise it computes ambient occlusion based on normal reconstructed from pick depth.\r\n// NB: This shader code actually begins with a `computeAmbientOcclusionPrefix` variation as shown above.\r\nconst computeAmbientOcclusion = `\r\n depthAndOrder.y = unfinalizeLinearDepth(db);\r\n float order = depthAndOrder.x;\r\n if (order >= kRenderOrder_PlanarBit)\r\n order = order - kRenderOrder_PlanarBit;\r\n\r\n if (order < kRenderOrder_LitSurface || order == kRenderOrder_Linear)\r\n return vec4(1.0);\r\n\r\n // NB: linearDepth: 1 == near, 0 == far\r\n\r\n float linearDepth = depthAndOrder.y;\r\n float nonLinearDepth = computeNonLinearDepth(db);\r\n if (nonLinearDepth > u_maxDistance)\r\n return vec4(1.0);\r\n\r\n vec3 viewPos = computePositionFromDepth(tc, nonLinearDepth).xyz;\r\n\r\n vec2 pixelSize = 1.0 / u_viewport;\r\n vec3 viewNormal = computeNormalFromDepth(viewPos, tc, pixelSize);\r\n\r\n vec2 sampleDirection = vec2(1.0, 0.0);\r\n float gapAngle = 90.0 * 0.017453292519943295; // radians per degree\r\n\r\n // Grab some random noise\r\n // Multiply screen UV (range 0..1) with size of viewport divided by 4 in order to tile the 4x4 noise texture across the screen.\r\n // Multiply the random 0..1 vec3 by 2 and then substract 1. This puts the components of the vec3 in the range -1..1.\r\n vec3 noiseVec = (TEXTURE(u_noise, tc * vec2(u_viewport.x / 4.0, u_viewport.y / 4.0)).rgb + 1.0) / 2.0;\r\n\r\n float bias = u_hbaoSettings.x; // Represents an angle in radians. If the dot product between the normal of the sample and the vector to the camera is less than this value, sampling stops in the current direction. This is used to remove shadows from near planar edges.\r\n float zLengthCap = u_hbaoSettings.y; // If the distance in linear Z from the current sample to first sample is greater than this value, sampling stops in the current direction.\r\n float intensity = u_hbaoSettings.z; // Raise the final occlusion to the power of this value. Larger values make the ambient shadows darker.\r\n float texelStepSize = u_hbaoSettings.w; // Indicates the distance to step toward the next texel sample in the current direction.\r\n\r\n float tOcclusion = 0.0;\r\n\r\n // loop for each direction\r\n for (int i = 0; i < 4; i++) {\r\n float newGapAngle = gapAngle * (float(i) + noiseVec.x);\r\n float cosVal = cos(newGapAngle);\r\n float sinVal = sin(newGapAngle);\r\n\r\n // rotate sampling direction\r\n vec2 rotatedSampleDirection = vec2(cosVal * sampleDirection.x - sinVal * sampleDirection.y, sinVal * sampleDirection.x + cosVal * sampleDirection.y);\r\n float curOcclusion = 0.0;\r\n float curStepSize = texelStepSize; // 1.0 = stepsize, StepSize should be specified by uniform - what are good values?\r\n\r\n // loop for each step\r\n for (int j = 0; j < 6; j++) {\r\n vec2 directionWithStep = vec2(rotatedSampleDirection.x * curStepSize * pixelSize.x, rotatedSampleDirection.y * curStepSize * pixelSize.y);\r\n vec2 newCoords = directionWithStep + tc;\r\n\r\n // do not repeat around the depth texture\r\n if(newCoords.x > 1.0 || newCoords.y > 1.0 || newCoords.x < 0.0 || newCoords.y < 0.0) {\r\n break;\r\n }\r\n\r\n db = readDepth(newCoords);\r\n float curLinearDepth = unfinalizeLinearDepth(db);\r\n float curNonLinearDepth = computeNonLinearDepth(db);\r\n vec3 curViewPos = computePositionFromDepth(newCoords, curNonLinearDepth).xyz;\r\n vec3 diffVec = curViewPos.xyz - viewPos.xyz;\r\n float zLength = abs(curLinearDepth - linearDepth);\r\n\r\n float dotVal = clamp(dot(viewNormal, normalize(diffVec)), 0.0, 1.0);\r\n float weight = smoothstep(0.0, 1.0, zLengthCap / zLength);\r\n\r\n if (dotVal < bias) {\r\n dotVal = 0.0;\r\n }\r\n\r\n curOcclusion = max(curOcclusion, dotVal * weight);\r\n curStepSize += texelStepSize;\r\n }\r\n tOcclusion += curOcclusion;\r\n }\r\n\r\n tOcclusion /= 4.0;\r\n tOcclusion = 1.0 - clamp(tOcclusion, 0.0, 1.0);\r\n tOcclusion = pow(tOcclusion, intensity);\r\n\r\n return vec4(tOcclusion, tOcclusion, tOcclusion, 1.0);\r\n`;\r\n\r\nconst computePositionFromDepth = `\r\nvec4 computePositionFromDepth(vec2 tc, float nonLinearDepth) {\r\n if (kFrustumType_Perspective == u_frustum.z) {\r\n vec2 xy = vec2((tc.x * 2.0 - 1.0), ((1.0 - tc.y) * 2.0 - 1.0));\r\n vec4 posEC = u_invProj * vec4(xy, nonLinearDepth, 1.0);\r\n posEC = posEC / posEC.w;\r\n return posEC;\r\n } else {\r\n float top = u_frustumPlanes.x;\r\n float bottom = u_frustumPlanes.y;\r\n float left = u_frustumPlanes.z;\r\n float right = u_frustumPlanes.w;\r\n return vec4(mix(left, right, tc.x), mix(bottom, top, tc.y), nonLinearDepth, 1.0);\r\n }\r\n}\r\n`;\r\n\r\nconst computeNormalFromDepth = `\r\nvec3 computeNormalFromDepth(vec3 viewPos, vec2 tc, vec2 pixelSize) {\r\n float nonLinearDepthU = computeNonLinearDepth(readDepth(tc - vec2(0.0, pixelSize.y)));\r\n float nonLinearDepthD = computeNonLinearDepth(readDepth(tc + vec2(0.0, pixelSize.y)));\r\n float nonLinearDepthL = computeNonLinearDepth(readDepth(tc - vec2(pixelSize.x, 0.0)));\r\n float nonLinearDepthR = computeNonLinearDepth(readDepth(tc + vec2(pixelSize.x, 0.0)));\r\n\r\n vec3 viewPosUp = computePositionFromDepth(tc - vec2(0.0, pixelSize.y), nonLinearDepthU).xyz;\r\n vec3 viewPosDown = computePositionFromDepth(tc + vec2(0.0, pixelSize.y), nonLinearDepthD).xyz;\r\n vec3 viewPosLeft = computePositionFromDepth(tc - vec2(pixelSize.x, 0.0), nonLinearDepthL).xyz;\r\n vec3 viewPosRight = computePositionFromDepth(tc + vec2(pixelSize.x, 0.0), nonLinearDepthR).xyz;\r\n\r\n vec3 up = viewPos.xyz - viewPosUp.xyz;\r\n vec3 down = viewPosDown.xyz - viewPos.xyz;\r\n vec3 left = viewPos.xyz - viewPosLeft.xyz;\r\n vec3 right = viewPosRight.xyz - viewPos.xyz;\r\n\r\n vec3 dx = length(left) < length(right) ? left : right;\r\n vec3 dy = length(up) < length(down) ? up : down;\r\n\r\n return normalize(cross(dy, dx));\r\n}\r\n`;\r\n\r\nconst computeNonLinearDepthPB = `\r\nfloat computeNonLinearDepth(float linearDepth) {\r\n return mix(u_frustum.y, u_frustum.x, linearDepth);\r\n}\r\n`;\r\nconst computeNonLinearDepthDB = `\r\nfloat computeNonLinearDepth(float depth) {\r\n return 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\r\n}\r\n`;\r\n\r\nconst readDepthPB = `\r\nfloat readDepth(vec2 tc) {\r\n return readDepthAndOrder(tc).y;\r\n}\r\n`;\r\nconst readDepthDB = `\r\nfloat readDepth(vec2 tc) {\r\n return TEXTURE(u_depthBuffer, tc).r;\r\n}\r\n`;\r\nconst unfinalizeLinearDepthDB = `\r\n float unfinalizeLinearDepth(float depth) {\r\n float eyeZ = 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\r\n float near = u_frustum.x, far = u_frustum.y;\r\n float depthRange = far - near;\r\n float linearDepth = (eyeZ - near) / depthRange;\r\n return 1.0 - linearDepth;\r\n }\r\n`;\r\n\r\nfunction _shouldUseDB() { return System.instance.supportsLogZBuffer && System.instance.capabilities.supportsTextureFloat; }\r\n\r\n/** @internal */\r\nexport function createAmbientOcclusionProgram(context: WebGLContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n const shouldUseDB = _shouldUseDB();\r\n\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n\r\n if (shouldUseDB) {\r\n frag.addFunction(unfinalizeLinearDepthDB);\r\n frag.addFunction(computeNonLinearDepthDB);\r\n frag.addFunction(readDepthDB);\r\n } else {\r\n frag.addDefine(\"unfinalizeLinearDepth\", \"\");\r\n frag.addFunction(computeNonLinearDepthPB);\r\n frag.addFunction(readDepthPB);\r\n }\r\n\r\n frag.addFunction(computePositionFromDepth);\r\n frag.addFunction(computeNormalFromDepth);\r\n addRenderOrderConstants(frag);\r\n\r\n if (shouldUseDB)\r\n frag.addUniform(\"u_logZ\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_logZ\", (uniform, params) => {\r\n uniform.setUniform2fv(params.target.uniforms.frustum.logZ);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, shouldUseDB ?\r\n computeAmbientOcclusionPrefixDB + computeAmbientOcclusion :\r\n computeAmbientOcclusionPrefixPB + computeAmbientOcclusion);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depthAndOrder, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (shouldUseDB)\r\n frag.addUniform(\"u_depthBuffer\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_depthBuffer\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depth, TextureUnit.Two);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_noise\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_noise\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.noise, TextureUnit.One);\r\n });\r\n });\r\n\r\n addFrustum(builder);\r\n addViewport(frag);\r\n\r\n frag.addUniform(\"u_invProj\", VariableType.Mat4, (prog) => {\r\n prog.addProgramUniform(\"u_invProj\", (uniform, params) => {\r\n const invProj = params.projectionMatrix.clone();\r\n invProj.invert();\r\n uniform.setMatrix4(invProj);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_frustumPlanes\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_frustumPlanes\", (uniform, params) => {\r\n uniform.setUniform4fv(params.target.uniforms.frustum.planes);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_hbaoSettings\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_hbaoSettings\", (uniform, params) => {\r\n const hbaoSettings = new Float32Array([\r\n params.target.ambientOcclusionSettings.bias,\r\n params.target.ambientOcclusionSettings.zLengthCap,\r\n params.target.ambientOcclusionSettings.intensity,\r\n params.target.ambientOcclusionSettings.texelStepSize]);\r\n uniform.setUniform4fv(hbaoSettings);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_maxDistance\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_maxDistance\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.ambientOcclusionSettings.maxDistance);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n builder.vert.headerComment = \"//!V! AmbientOcclusion\";\r\n builder.frag.headerComment = \"//!F! AmbientOcclusion\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
1
+ {"version":3,"file":"AmbientOcclusion.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/AmbientOcclusion.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\n// portions adapted from Cesium.js Copyright 2011 - 2017 Cesium Contributors\r\n\r\nimport { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { AmbientOcclusionGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { System } from \"../System\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addFrustum } from \"./Common\";\r\nimport { decodeDepthRgb } from \"./Decode\";\r\nimport { addRenderOrderConstants, readDepthAndOrder } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords, assignFragColor } from \"./Fragment\";\r\nimport { addViewport } from \"./Viewport\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\n// 'PB' indicates a shader variation when only the pickbuffer is available\r\n// 'DB' indicates a shader variation when the real floating point depth buffer is available.\r\n\r\nconst computeAmbientOcclusionPrefixPB = `\r\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\nvec2 depthAndOrder = readDepthAndOrder(tc);\r\nfloat db = depthAndOrder.y;\r\n`;\r\n\r\nconst computeAmbientOcclusionPrefixDB = `\r\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\nvec2 depthAndOrder = readDepthAndOrder(tc);\r\nfloat db = readDepth(tc);\r\n`;\r\n\r\n// This outputs 1 for unlit surfaces, and for polylines and point strings.\r\n// Otherwise it computes ambient occlusion based on normal reconstructed from pick depth.\r\n// NB: This shader code actually begins with a `computeAmbientOcclusionPrefix` variation as shown above.\r\nconst computeAmbientOcclusion = `\r\n depthAndOrder.y = unfinalizeLinearDepth(db);\r\n float order = depthAndOrder.x;\r\n if (order >= kRenderOrder_PlanarBit)\r\n order = order - kRenderOrder_PlanarBit;\r\n\r\n if (order < kRenderOrder_LitSurface || order == kRenderOrder_Linear)\r\n return vec4(1.0);\r\n\r\n // NB: linearDepth: 1 == near, 0 == far\r\n\r\n float linearDepth = depthAndOrder.y;\r\n float nonLinearDepth = computeNonLinearDepth(db);\r\n if (nonLinearDepth > u_maxDistance)\r\n return vec4(1.0);\r\n\r\n vec3 viewPos = computePositionFromDepth(tc, nonLinearDepth).xyz;\r\n\r\n vec2 pixelSize = 1.0 / u_viewport;\r\n vec3 viewNormal = computeNormalFromDepth(viewPos, tc, pixelSize);\r\n\r\n vec2 sampleDirection = vec2(1.0, 0.0);\r\n float gapAngle = 90.0 * 0.017453292519943295; // radians per degree\r\n\r\n // Grab some random noise\r\n // Multiply screen UV (range 0..1) with size of viewport divided by 4 in order to tile the 4x4 noise texture across the screen.\r\n // Multiply the random 0..1 vec3 by 2 and then substract 1. This puts the components of the vec3 in the range -1..1.\r\n vec3 noiseVec = (TEXTURE(u_noise, tc * vec2(u_viewport.x / 4.0, u_viewport.y / 4.0)).rgb + 1.0) / 2.0;\r\n\r\n float bias = u_hbaoSettings.x; // Represents an angle in radians. If the dot product between the normal of the sample and the vector to the camera is less than this value, sampling stops in the current direction. This is used to remove shadows from near planar edges.\r\n float zLengthCap = u_hbaoSettings.y; // If the distance in linear Z from the current sample to first sample is greater than this value, sampling stops in the current direction.\r\n float intensity = u_hbaoSettings.z; // Raise the final occlusion to the power of this value. Larger values make the ambient shadows darker.\r\n float texelStepSize = clamp(u_hbaoSettings.w * linearDepth, 1.0, u_hbaoSettings.w); // Indicates the distance to step toward the next texel sample in the current direction.\r\n\r\n float tOcclusion = 0.0;\r\n\r\n // loop for each direction\r\n for (int i = 0; i < 4; i++) {\r\n float newGapAngle = gapAngle * (float(i) + noiseVec.x);\r\n float cosVal = cos(newGapAngle);\r\n float sinVal = sin(newGapAngle);\r\n\r\n // rotate sampling direction\r\n vec2 rotatedSampleDirection = vec2(cosVal * sampleDirection.x - sinVal * sampleDirection.y, sinVal * sampleDirection.x + cosVal * sampleDirection.y);\r\n float curOcclusion = 0.0;\r\n float curStepSize = texelStepSize; // 1.0 = stepsize, StepSize should be specified by uniform - what are good values?\r\n\r\n // loop for each step\r\n for (int j = 0; j < 6; j++) {\r\n vec2 directionWithStep = vec2(rotatedSampleDirection.x * curStepSize * pixelSize.x, rotatedSampleDirection.y * curStepSize * pixelSize.y);\r\n vec2 newCoords = directionWithStep + tc;\r\n\r\n // do not repeat around the depth texture\r\n if(newCoords.x > 1.0 || newCoords.y > 1.0 || newCoords.x < 0.0 || newCoords.y < 0.0) {\r\n break;\r\n }\r\n\r\n db = readDepth(newCoords);\r\n float curLinearDepth = unfinalizeLinearDepth(db);\r\n float curNonLinearDepth = computeNonLinearDepth(db);\r\n vec3 curViewPos = computePositionFromDepth(newCoords, curNonLinearDepth).xyz;\r\n vec3 diffVec = curViewPos.xyz - viewPos.xyz;\r\n float zLength = abs(curLinearDepth - linearDepth);\r\n\r\n float dotVal = clamp(dot(viewNormal, normalize(diffVec)), 0.0, 1.0);\r\n float weight = smoothstep(0.0, 1.0, zLengthCap / zLength);\r\n\r\n if (dotVal < bias) {\r\n dotVal = 0.0;\r\n }\r\n\r\n curOcclusion = max(curOcclusion, dotVal * weight);\r\n curStepSize += texelStepSize;\r\n }\r\n tOcclusion += curOcclusion;\r\n }\r\n\r\n float distanceFadeFactor = kFrustumType_Perspective == u_frustum.z ? 1.0 - pow(clamp(nonLinearDepth / u_maxDistance, 0.0, 1.0), 4.0) : 1.0;\r\n tOcclusion *= distanceFadeFactor;\r\n\r\n tOcclusion /= 4.0;\r\n tOcclusion = 1.0 - clamp(tOcclusion, 0.0, 1.0);\r\n tOcclusion = pow(tOcclusion, intensity);\r\n\r\n return vec4(tOcclusion, tOcclusion, tOcclusion, 1.0);\r\n`;\r\n\r\nconst computePositionFromDepth = `\r\nvec4 computePositionFromDepth(vec2 tc, float nonLinearDepth) {\r\n if (kFrustumType_Perspective == u_frustum.z) {\r\n vec2 xy = vec2((tc.x * 2.0 - 1.0), ((1.0 - tc.y) * 2.0 - 1.0));\r\n vec4 posEC = u_invProj * vec4(xy, nonLinearDepth, 1.0);\r\n posEC = posEC / posEC.w;\r\n return posEC;\r\n } else {\r\n float top = u_frustumPlanes.x;\r\n float bottom = u_frustumPlanes.y;\r\n float left = u_frustumPlanes.z;\r\n float right = u_frustumPlanes.w;\r\n return vec4(mix(left, right, tc.x), mix(bottom, top, tc.y), nonLinearDepth, 1.0);\r\n }\r\n}\r\n`;\r\n\r\nconst computeNormalFromDepth = `\r\nvec3 computeNormalFromDepth(vec3 viewPos, vec2 tc, vec2 pixelSize) {\r\n float nonLinearDepthU = computeNonLinearDepth(readDepth(tc - vec2(0.0, pixelSize.y)));\r\n float nonLinearDepthD = computeNonLinearDepth(readDepth(tc + vec2(0.0, pixelSize.y)));\r\n float nonLinearDepthL = computeNonLinearDepth(readDepth(tc - vec2(pixelSize.x, 0.0)));\r\n float nonLinearDepthR = computeNonLinearDepth(readDepth(tc + vec2(pixelSize.x, 0.0)));\r\n\r\n vec3 viewPosUp = computePositionFromDepth(tc - vec2(0.0, pixelSize.y), nonLinearDepthU).xyz;\r\n vec3 viewPosDown = computePositionFromDepth(tc + vec2(0.0, pixelSize.y), nonLinearDepthD).xyz;\r\n vec3 viewPosLeft = computePositionFromDepth(tc - vec2(pixelSize.x, 0.0), nonLinearDepthL).xyz;\r\n vec3 viewPosRight = computePositionFromDepth(tc + vec2(pixelSize.x, 0.0), nonLinearDepthR).xyz;\r\n\r\n vec3 up = viewPos.xyz - viewPosUp.xyz;\r\n vec3 down = viewPosDown.xyz - viewPos.xyz;\r\n vec3 left = viewPos.xyz - viewPosLeft.xyz;\r\n vec3 right = viewPosRight.xyz - viewPos.xyz;\r\n\r\n vec3 dx = length(left) < length(right) ? left : right;\r\n vec3 dy = length(up) < length(down) ? up : down;\r\n\r\n return normalize(cross(dy, dx));\r\n}\r\n`;\r\n\r\nconst computeNonLinearDepthPB = `\r\nfloat computeNonLinearDepth(float linearDepth) {\r\n return mix(u_frustum.y, u_frustum.x, linearDepth);\r\n}\r\n`;\r\nconst computeNonLinearDepthDB = `\r\nfloat computeNonLinearDepth(float depth) {\r\n return 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\r\n}\r\n`;\r\n\r\nconst readDepthPB = `\r\nfloat readDepth(vec2 tc) {\r\n return readDepthAndOrder(tc).y;\r\n}\r\n`;\r\nconst readDepthDB = `\r\nfloat readDepth(vec2 tc) {\r\n return TEXTURE(u_depthBuffer, tc).r;\r\n}\r\n`;\r\nconst unfinalizeLinearDepthDB = `\r\n float unfinalizeLinearDepth(float depth) {\r\n float eyeZ = 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\r\n float near = u_frustum.x, far = u_frustum.y;\r\n float depthRange = far - near;\r\n float linearDepth = (eyeZ - near) / depthRange;\r\n return 1.0 - linearDepth;\r\n }\r\n`;\r\n\r\nfunction _shouldUseDB() { return System.instance.supportsLogZBuffer && System.instance.capabilities.supportsTextureFloat; }\r\n\r\n/** @internal */\r\nexport function createAmbientOcclusionProgram(context: WebGLContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n const shouldUseDB = _shouldUseDB();\r\n\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n\r\n if (shouldUseDB) {\r\n frag.addFunction(unfinalizeLinearDepthDB);\r\n frag.addFunction(computeNonLinearDepthDB);\r\n frag.addFunction(readDepthDB);\r\n } else {\r\n frag.addDefine(\"unfinalizeLinearDepth\", \"\");\r\n frag.addFunction(computeNonLinearDepthPB);\r\n frag.addFunction(readDepthPB);\r\n }\r\n\r\n frag.addFunction(computePositionFromDepth);\r\n frag.addFunction(computeNormalFromDepth);\r\n addRenderOrderConstants(frag);\r\n\r\n if (shouldUseDB)\r\n frag.addUniform(\"u_logZ\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_logZ\", (uniform, params) => {\r\n uniform.setUniform2fv(params.target.uniforms.frustum.logZ);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, shouldUseDB ?\r\n computeAmbientOcclusionPrefixDB + computeAmbientOcclusion :\r\n computeAmbientOcclusionPrefixPB + computeAmbientOcclusion);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depthAndOrder, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (shouldUseDB)\r\n frag.addUniform(\"u_depthBuffer\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_depthBuffer\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depth, TextureUnit.Two);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_noise\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_noise\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.noise, TextureUnit.One);\r\n });\r\n });\r\n\r\n addFrustum(builder);\r\n addViewport(frag);\r\n\r\n frag.addUniform(\"u_invProj\", VariableType.Mat4, (prog) => {\r\n prog.addProgramUniform(\"u_invProj\", (uniform, params) => {\r\n const invProj = params.projectionMatrix.clone();\r\n invProj.invert();\r\n uniform.setMatrix4(invProj);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_frustumPlanes\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_frustumPlanes\", (uniform, params) => {\r\n uniform.setUniform4fv(params.target.uniforms.frustum.planes);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_hbaoSettings\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_hbaoSettings\", (uniform, params) => {\r\n const hbaoSettings = new Float32Array([\r\n params.target.ambientOcclusionSettings.bias,\r\n params.target.ambientOcclusionSettings.zLengthCap,\r\n params.target.ambientOcclusionSettings.intensity,\r\n params.target.ambientOcclusionSettings.texelStepSize]);\r\n uniform.setUniform4fv(hbaoSettings);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_maxDistance\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_maxDistance\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.ambientOcclusionSettings.maxDistance);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n builder.vert.headerComment = \"//!V! AmbientOcclusion\";\r\n builder.frag.headerComment = \"//!F! AmbientOcclusion\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
@@ -1,8 +1,8 @@
1
1
  /** @packageDocumentation
2
2
  * @module IModelConnection
3
3
  */
4
- import { BeEvent, GuidString, Id64Arg, Id64Set, Id64String, TransientIdSequence } from "@itwin/core-bentley";
5
- import { AxisAlignedBox3d, Cartographic, CodeProps, CodeSpec, EcefLocationProps, ECSqlReader, ElementLoadOptions, ElementProps, EntityQueryParams, FontMap, GeometryContainmentRequestProps, GeometryContainmentResponseProps, GeometrySummaryRequestProps, IModel, IModelConnectionProps, MassPropertiesPerCandidateRequestProps, MassPropertiesPerCandidateResponseProps, MassPropertiesRequestProps, MassPropertiesResponseProps, ModelProps, ModelQueryParams, Placement, QueryBinder, QueryOptions, SnapRequestProps, SnapResponseProps, SubCategoryAppearance, TextureData, TextureLoadProps, ThumbnailProps, ViewDefinitionProps, ViewQueryParams, ViewStateProps } from "@itwin/core-common";
4
+ import { BeEvent, CompressedId64Set, GuidString, Id64Arg, Id64Set, Id64String, TransientIdSequence } from "@itwin/core-bentley";
5
+ import { AxisAlignedBox3d, Cartographic, CodeProps, CodeSpec, EcefLocationProps, ECSqlReader, ElementLoadOptions, ElementProps, EntityQueryParams, FontMap, GeometryContainmentRequestProps, GeometryContainmentResponseProps, GeometrySummaryRequestProps, IModel, IModelConnectionProps, MassPropertiesPerCandidateRequestProps, MassPropertiesPerCandidateResponseProps, MassPropertiesRequestProps, MassPropertiesResponseProps, ModelProps, ModelQueryParams, Placement, QueryBinder, QueryOptions, SnapRequestProps, SnapResponseProps, SubCategoryAppearance, SubCategoryResultRow, TextureData, TextureLoadProps, ThumbnailProps, ViewDefinitionProps, ViewQueryParams, ViewStateProps } from "@itwin/core-common";
6
6
  import { Point3d, Range3d, Range3dProps, Transform, XYAndZ, XYZProps } from "@itwin/core-geometry";
7
7
  import { BriefcaseConnection } from "./BriefcaseConnection";
8
8
  import { CheckpointConnection } from "./CheckpointConnection";
@@ -147,6 +147,13 @@ export declare abstract class IModelConnection extends IModel {
147
147
  * @beta
148
148
  * */
149
149
  createQueryReader(ecsql: string, params?: QueryBinder, config?: QueryOptions): ECSqlReader;
150
+ /**
151
+ * queries the BisCore.SubCategory table for the entries that are children of the passed categoryIds
152
+ * @param compressedCategoryIds compressed category Ids
153
+ * @returns array of SubCategoryResultRow
154
+ * @internal
155
+ */
156
+ querySubCategories(compressedCategoryIds: CompressedId64Set): Promise<SubCategoryResultRow[]>;
150
157
  /** Execute a query and stream its results
151
158
  * The result of the query is async iterator over the rows. The iterator will get next page automatically once rows in current page has been read.
152
159
  * [ECSQL row]($docs/learning/ECSQLRowFormat).
@@ -1 +1 @@
1
- {"version":3,"file":"IModelConnection.d.ts","sourceRoot":"","sources":["../../src/IModelConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IModelConnection.d.ts","sourceRoot":"","sources":["../../src/IModelConnection.ts"],"names":[],"mappings":"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"}
@@ -166,6 +166,15 @@ export class IModelConnection extends IModel {
166
166
  };
167
167
  return new ECSqlReader(executor, ecsql, params, config);
168
168
  }
169
+ /**
170
+ * queries the BisCore.SubCategory table for the entries that are children of the passed categoryIds
171
+ * @param compressedCategoryIds compressed category Ids
172
+ * @returns array of SubCategoryResultRow
173
+ * @internal
174
+ */
175
+ async querySubCategories(compressedCategoryIds) {
176
+ return IModelReadRpcInterface.getClientForRouting(this.routingContext.token).querySubCategories(this.getRpcProps(), compressedCategoryIds);
177
+ }
169
178
  /** Execute a query and stream its results
170
179
  * The result of the query is async iterator over the rows. The iterator will get next page automatically once rows in current page has been read.
171
180
  * [ECSQL row]($docs/learning/ECSQLRowFormat).