From 9b92bbb1bf8beffbb236d6939ad7d8851fcad212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Flatval?= Date: Wed, 17 Jul 2024 15:22:13 +0200 Subject: [PATCH] chore: fix data texture generation (??) and material onbeforerender --- .../pointclouds/src/potree-three-loader/utils/utils.ts | 3 ++- .../rendering/src/pointcloud-rendering/PointCloudMaterial.ts | 2 +- .../pointcloud-rendering/PointCloudObjectAppearanceTexture.ts | 2 +- .../rendering/src/pointcloud-rendering/texture-generation.ts | 3 ++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/viewer/packages/pointclouds/src/potree-three-loader/utils/utils.ts b/viewer/packages/pointclouds/src/potree-three-loader/utils/utils.ts index d3ca62814e8..d02c29f93f8 100644 --- a/viewer/packages/pointclouds/src/potree-three-loader/utils/utils.ts +++ b/viewer/packages/pointclouds/src/potree-three-loader/utils/utils.ts @@ -77,8 +77,9 @@ export function makeOnBeforeRender( node: IPointCloudTreeNode, pcIndex: number ): (renderer: WebGLRenderer, scene: Scene, camera: Camera, bufferGeometry: BufferGeometry, material: Material) => void { - return (_renderer: WebGLRenderer, _scene: Scene, _camera: Camera, _geometry: BufferGeometry, material: Material) => { + return (renderer: WebGLRenderer, _scene: Scene, _camera: Camera, _geometry: BufferGeometry, material: Material) => { const pointCloudMaterial = material as PointCloudMaterial; + pointCloudMaterial.onBeforeRender(renderer); const materialUniforms = pointCloudMaterial.uniforms; materialUniforms.level.value = node.level; diff --git a/viewer/packages/rendering/src/pointcloud-rendering/PointCloudMaterial.ts b/viewer/packages/rendering/src/pointcloud-rendering/PointCloudMaterial.ts index 9b4755dae92..dd3badc9472 100644 --- a/viewer/packages/rendering/src/pointcloud-rendering/PointCloudMaterial.ts +++ b/viewer/packages/rendering/src/pointcloud-rendering/PointCloudMaterial.ts @@ -172,7 +172,7 @@ export class PointCloudMaterial extends RawShaderMaterial { glslVersion: GLSL3 }); - const tex = (this.visibleNodesTexture = generateDataTexture(2048, 1, COLOR_WHITE)); + const tex = (this.visibleNodesTexture = generateDataTexture(2048, 1, COLOR_WHITE, 0x0)); tex.minFilter = NearestFilter; tex.magFilter = NearestFilter; this.setUniform('visibleNodes', tex); diff --git a/viewer/packages/rendering/src/pointcloud-rendering/PointCloudObjectAppearanceTexture.ts b/viewer/packages/rendering/src/pointcloud-rendering/PointCloudObjectAppearanceTexture.ts index 4f69a637759..d3fa3de0a9a 100644 --- a/viewer/packages/rendering/src/pointcloud-rendering/PointCloudObjectAppearanceTexture.ts +++ b/viewer/packages/rendering/src/pointcloud-rendering/PointCloudObjectAppearanceTexture.ts @@ -27,7 +27,7 @@ export class PointCloudObjectAppearanceTexture { private _annotationIdsToObjectId: Map | undefined; constructor(width: number, height: number) { - this._objectStyleTexture = generateDataTexture(width, height, new THREE.Color(0x01000000)); // Initialize with visibility bit set + this._objectStyleTexture = generateDataTexture(width, height, new THREE.Color(0x0), 0x01); // Initialize with visibility bit set this._width = width; this._height = height; diff --git a/viewer/packages/rendering/src/pointcloud-rendering/texture-generation.ts b/viewer/packages/rendering/src/pointcloud-rendering/texture-generation.ts index b6c870a3a6f..101c5c8dc27 100644 --- a/viewer/packages/rendering/src/pointcloud-rendering/texture-generation.ts +++ b/viewer/packages/rendering/src/pointcloud-rendering/texture-generation.ts @@ -14,7 +14,7 @@ import { } from 'three'; import { PointClassification, IGradient } from './types'; -export function generateDataTexture(width: number, height: number, color: Color): DataTexture { +export function generateDataTexture(width: number, height: number, color: Color, alpha: number): DataTexture { const size = width * height; const data = new Uint8Array(4 * size); @@ -26,6 +26,7 @@ export function generateDataTexture(width: number, height: number, color: Color) data[i * 4] = r; data[i * 4 + 1] = g; data[i * 4 + 2] = b; + data[i * 4 + 3] = alpha; } const texture = new DataTexture(data, width, height, RGBAFormat);