UNPKG

@webviz/subsurface-viewer

Version:

3D visualization component for subsurface reservoir data

3 lines (2 loc) 1.7 kB
declare const _default: "#version 300 es\n#define SHADER_NAME well-markers-vertex-shader\n\nin vec3 positions;\nin vec3 instancePositions;\nin float instanceSizes;\nin float instanceAzimuths;\nin float instanceInclinations;\nin vec4 instanceColors;\nin vec4 instanceOutlineColors;\nin vec3 instancePickingColors;\n\nout vec4 vColor;\n\nvoid main(void) {\n vec3 position = instancePositions;\n position.z *= (wellMarkers.ZIncreasingDownwards? -1.0 : 1.0);\n\n geometry.worldPosition = position;\n geometry.pickingColor = instancePickingColors;\n\n vColor = wellMarkers.useOutlineColor ? instanceOutlineColors : instanceColors;\n\n float sizeInPixels = project_size_to_pixel(instanceSizes, wellMarkers.sizeUnits);\n float projectedSize = project_pixel_size(sizeInPixels);\n\n float sinA = sin (PI / 180.0 * instanceAzimuths);\n float cosA = cos (PI / 180.0 * instanceAzimuths);\n\n float sinI = sin (PI / 180.0 * instanceInclinations);\n float cosI = cos (PI / 180.0 * instanceInclinations);\n\n mat3 azimuthMatrix = mat3(vec3(cosA, sinA, 0.0), vec3(-sinA, cosA, 0.0), vec3(0.0, 0.0, 1.0));\n mat3 inclMatrix = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, cosI, sinI), vec3(0.0, -sinI, cosI));\n mat3 sizeMatrix = mat3(vec3(projectedSize, 0.0, 0.0), vec3(0.0, projectedSize, 0.0), vec3(0.0, 0.0, 1.0));\n vec3 rotatedPos = azimuthMatrix * inclMatrix * sizeMatrix *positions;\n\n vec4 position_commonspace = vec4(project_position(rotatedPos + position), 0.0);\n gl_Position = project_common_position_to_clipspace(position_commonspace);\n\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n"; export default _default;