UNPKG

@deck.gl/layers

Version:

deck.gl core layers

92 lines (75 loc) 2.93 kB
// deck.gl // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors export default /* wgsl */ `\ struct ConstantAttributes { instanceNormals: vec3<f32>, instanceColors: vec4<f32>, instancePositions: vec3<f32>, instancePositions64Low: vec3<f32>, instancePickingColors: vec3<f32> }; const constants = ConstantAttributes( vec3<f32>(1.0, 0.0, 0.0), vec4<f32>(0.0, 0.0, 0.0, 1.0), vec3<f32>(0.0), vec3<f32>(0.0), vec3<f32>(0.0) ); struct Attributes { @builtin(instance_index) instanceIndex : u32, @builtin(vertex_index) vertexIndex : u32, @location(0) positions: vec3<f32>, @location(1) instancePositions: vec3<f32>, @location(2) instancePositions64Low: vec3<f32>, @location(3) instanceNormals: vec3<f32>, @location(4) instanceColors: vec4<f32>, @location(5) instancePickingColors: vec3<f32> }; struct Varyings { @builtin(position) position: vec4<f32>, @location(0) vColor: vec4<f32>, @location(1) unitPosition: vec2<f32>, }; @vertex fn vertexMain(attributes: Attributes) -> Varyings { var varyings: Varyings; // var geometry: Geometry; // geometry.worldPosition = instancePositions; // geometry.normal = project_normal(instanceNormals); // position on the containing square in [-1, 1] space varyings.unitPosition = attributes.positions.xy; geometry.uv = varyings.unitPosition; geometry.pickingColor = attributes.instancePickingColors; // Find the center of the point and add the current vertex let offset = vec3<f32>(attributes.positions.xy * project_unit_size_to_pixel(pointCloud.radiusPixels, pointCloud.sizeUnits), 0.0); // DECKGL_FILTER_SIZE(offset, geometry); varyings.position = project_position_to_clipspace(attributes.instancePositions, attributes.instancePositions64Low, vec3<f32>(0.0)); // TODO , geometry.position); // DECKGL_FILTER_GL_POSITION(gl_Position, geometry); let clipPixels = project_pixel_size_to_clipspace(offset.xy); varyings.position.x += clipPixels.x; varyings.position.y += clipPixels.y; // Apply lighting let lightColor = lighting_getLightColor2(attributes.instanceColors.rgb, project.cameraPosition, geometry.position.xyz, geometry.normal); // Apply opacity to instance color, or return instance picking color varyings.vColor = vec4(lightColor, attributes.instanceColors.a * color.opacity); // DECKGL_FILTER_COLOR(vColor, geometry); return varyings; } @fragment fn fragmentMain(varyings: Varyings) -> @location(0) vec4<f32> { // var geometry: Geometry; // geometry.uv = unitPosition.xy; let distToCenter = length(varyings.unitPosition); if (distToCenter > 1.0) { discard; } var fragColor: vec4<f32>; fragColor = varyings.vColor; // DECKGL_FILTER_COLOR(fragColor, geometry); // Apply premultiplied alpha as required by transparent canvas fragColor = deckgl_premultiplied_alpha(fragColor); return fragColor; } `; //# sourceMappingURL=point-cloud-layer.wgsl.js.map