UNPKG

@webviz/subsurface-viewer

Version:

3D visualization component for subsurface reservoir data

45 lines (34 loc) 1.66 kB
export default `#version 300 es #define SHADER_NAME well-markers-vertex-shader in vec3 positions; in vec3 instancePositions; in float instanceSizes; in float instanceAzimuths; in float instanceInclinations; in vec4 instanceColors; in vec4 instanceOutlineColors; in vec3 instancePickingColors; out vec4 vColor; void main(void) { vec3 position = instancePositions; position.z *= (wellMarkers.ZIncreasingDownwards? -1.0 : 1.0); geometry.worldPosition = position; geometry.pickingColor = instancePickingColors; vColor = wellMarkers.useOutlineColor ? instanceOutlineColors : instanceColors; float sizeInPixels = project_size_to_pixel(instanceSizes, wellMarkers.sizeUnits); float projectedSize = project_pixel_size(sizeInPixels); float sinA = sin (PI / 180.0 * instanceAzimuths); float cosA = cos (PI / 180.0 * instanceAzimuths); float sinI = sin (PI / 180.0 * instanceInclinations); float cosI = cos (PI / 180.0 * instanceInclinations); mat3 azimuthMatrix = mat3(vec3(cosA, sinA, 0.0), vec3(-sinA, cosA, 0.0), vec3(0.0, 0.0, 1.0)); mat3 inclMatrix = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, cosI, sinI), vec3(0.0, -sinI, cosI)); mat3 sizeMatrix = mat3(vec3(projectedSize, 0.0, 0.0), vec3(0.0, projectedSize, 0.0), vec3(0.0, 0.0, 1.0)); vec3 rotatedPos = azimuthMatrix * inclMatrix * sizeMatrix *positions; vec4 position_commonspace = vec4(project_position(rotatedPos + position), 0.0); gl_Position = project_common_position_to_clipspace(position_commonspace); DECKGL_FILTER_GL_POSITION(gl_Position, geometry); DECKGL_FILTER_COLOR(vColor, geometry); } `; //# sourceMappingURL=marker.vs.glsl.js.map