@jbrowse/render-core 5.0.0-beta.11 → 5.0.0-beta.13
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.
- package/esm/hal/webgl2Hal.js +3 -0
- package/esm/marks/barMark.js +4 -2
- package/esm/marks/index.d.ts +3 -3
- package/esm/marks/index.js +2 -2
- package/esm/marks/lineMark.d.ts +6 -0
- package/esm/marks/lineMark.js +34 -21
- package/esm/marks/linkMark.d.ts +21 -1
- package/esm/marks/linkMark.js +25 -6
- package/esm/marks/markPlan.d.ts +4 -3
- package/esm/marks/markPlan.js +5 -4
- package/esm/marks/rowLane.d.ts +2 -0
- package/esm/marks/rowLane.js +7 -3
- package/esm/marks/spanMark.d.ts +4 -3
- package/esm/marks/spanMark.js +3 -3
- package/esm/marks/types.d.ts +4 -1
- package/esm/marks/types.js +3 -1
- package/esm/shaders/barMark.glsl.generated.d.ts +1 -1
- package/esm/shaders/barMark.glsl.generated.js +1 -1
- package/esm/shaders/barMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/barMark.wgsl.generated.js +1 -1
- package/esm/shaders/curveDistance.js.generated.d.ts +1 -0
- package/esm/shaders/curveDistance.js.generated.js +9 -0
- package/esm/shaders/insertionGlyph.generated.d.ts +6 -0
- package/esm/shaders/insertionGlyph.generated.js +8 -0
- package/esm/shaders/lineCenterMark.glsl.generated.d.ts +2 -2
- package/esm/shaders/lineCenterMark.glsl.generated.js +2 -2
- package/esm/shaders/lineCenterMark.iface.generated.d.ts +11 -9
- package/esm/shaders/lineCenterMark.iface.generated.js +20 -18
- package/esm/shaders/lineCenterMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/lineCenterMark.wgsl.generated.js +1 -1
- package/esm/shaders/lineCommon.js.generated.d.ts +1 -0
- package/esm/shaders/lineCommon.js.generated.js +20 -0
- package/esm/shaders/lineStepMark.glsl.generated.d.ts +2 -2
- package/esm/shaders/lineStepMark.glsl.generated.js +2 -2
- package/esm/shaders/lineStepMark.iface.generated.d.ts +11 -9
- package/esm/shaders/lineStepMark.iface.generated.js +20 -18
- package/esm/shaders/lineStepMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/lineStepMark.wgsl.generated.js +1 -1
- package/esm/shaders/linkMark.glsl.generated.d.ts +1 -1
- package/esm/shaders/linkMark.glsl.generated.js +1 -1
- package/esm/shaders/linkMark.js.generated.d.ts +2 -1
- package/esm/shaders/linkMark.js.generated.js +3 -3
- package/esm/shaders/linkMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/linkMark.wgsl.generated.js +1 -1
- package/esm/shaders/pointMark.glsl.generated.d.ts +1 -1
- package/esm/shaders/pointMark.glsl.generated.js +1 -1
- package/esm/shaders/pointMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/pointMark.wgsl.generated.js +1 -1
- package/esm/shaders/spanMark.glsl.generated.d.ts +1 -1
- package/esm/shaders/spanMark.glsl.generated.js +1 -1
- package/esm/shaders/spanMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/spanMark.wgsl.generated.js +1 -1
- package/esm/slangPass.d.ts +5 -3
- package/esm/slangPass.js +2 -2
- package/package.json +2 -2
- package/src/shaders/barMark.glsl.generated.ts +1 -1
- package/src/shaders/barMark.wgsl.generated.ts +1 -1
- package/src/shaders/curveDistance.js.generated.ts +12 -0
- package/src/shaders/curveDistance.slang +1 -1
- package/src/shaders/insertionGlyph.generated.ts +14 -0
- package/src/shaders/insertionGlyph.slang +59 -0
- package/src/shaders/lineCenterMark.glsl.generated.ts +2 -2
- package/src/shaders/lineCenterMark.iface.generated.ts +21 -18
- package/src/shaders/lineCenterMark.slang +5 -1
- package/src/shaders/lineCenterMark.wgsl.generated.ts +1 -1
- package/src/shaders/lineCommon.js.generated.ts +20 -0
- package/src/shaders/lineCommon.slang +14 -4
- package/src/shaders/lineStepMark.glsl.generated.ts +2 -2
- package/src/shaders/lineStepMark.iface.generated.ts +21 -18
- package/src/shaders/lineStepMark.slang +5 -1
- package/src/shaders/lineStepMark.wgsl.generated.ts +1 -1
- package/src/shaders/linkMark.glsl.generated.ts +1 -1
- package/src/shaders/linkMark.js.generated.ts +3 -3
- package/src/shaders/linkMark.slang +10 -7
- package/src/shaders/linkMark.wgsl.generated.ts +1 -1
- package/src/shaders/pointMark.glsl.generated.ts +1 -1
- package/src/shaders/pointMark.wgsl.generated.ts +1 -1
- package/src/shaders/rowTable.slang +5 -1
- package/src/shaders/spanMark.glsl.generated.ts +1 -1
- package/src/shaders/spanMark.wgsl.generated.ts +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from lineCenterMark.slang.
|
|
2
2
|
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
-
export const WGSL_SOURCE = "struct Uniforms_std140_0\n{\n @align(16) bpRangeX_0 : vec3<f32>,\n @align(4) canvasHeight_0 : f32,\n @align(16) domainMin_0 : f32,\n @align(4) domainMax_0 : f32,\n @align(8) valueScaleType_0 : i32,\n @align(4) valueSymlogConstant_0 : f32,\n @align(16) rampMode_0 : i32,\n @align(4) rampMin_0 : f32,\n @align(8) rampMax_0 : f32,\n @align(4) rampMidNorm_0 : f32,\n @align(16) colorCutCount_0 : i32,\n @align(16) colorCuts_0 : array<vec4<f32>, i32(2)>,\n @align(16) colorBands_0 : array<vec4<f32>, i32(9)>,\n @align(16) rowHeight_0 : f32,\n @align(4) rowBandPx_0 : f32,\n @align(8) rowOffsetPx_0 : f32,\n @align(4) origin_0 : f32,\n @align(16) lineWidth_0 : f32,\n @align(4) zero_0 : f32,\n @align(8) viewportWidth_0 : f32,\n @align(4) devicePixelRatio_0 : f32,\n @align(16) rowTableKeys_0 : i32,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : Uniforms_std140_0;\n@binding(2) @group(0) var colorRamp_texture_0 : texture_2d<f32>;\n\n@binding(3) @group(0) var colorRamp_sampler_0 : sampler;\n\n@binding(4) @group(0) var rowTable_texture_0 : texture_2d<f32>;\n\n@binding(5) @group(0) var rowTable_sampler_0 : sampler;\n\nfn unpackRGBA_0( c_0 : u32) -> vec4<f32>\n{\n return vec4<f32>(f32((((c_0 >> (u32(0)))) & (u32(255)))), f32((((c_0 >> (u32(8)))) & (u32(255)))), f32((((c_0 >> (u32(16)))) & (u32(255)))), f32((((c_0 >> (u32(24)))) & (u32(255))))) / vec4<f32>(255.0f);\n}\n\nfn rampMidT_0( t_0 : f32, mid_0 : f32) -> f32\n{\n var _S1 : f32 = max(mid_0, 1.0f - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0f * _S1), 0.0f, 1.0f);\n}\n\nfn rampColor_0( ramp_texture_0 : texture_2d<f32>, ramp_sampler_0 : sampler, t_1 : f32) -> vec4<f32>\n{\n return (textureSampleLevel((ramp_texture_0), (ramp_sampler_0), (vec2<f32>((clamp(t_1, 0.0f, 1.0f) * 255.0f + 0.5f) / 256.0f, 0.5f)), (0.0f)));\n}\n\nfn colorCutAt_0( i_0 : i32, cutsLo_0 : vec4<f32>, cutsHi_0 : vec4<f32>) -> f32\n{\n var _S2 : f32;\n if(i_0 < i32(4))\n {\n _S2 = cutsLo_0[i_0];\n }\n else\n {\n _S2 = cutsHi_0[i_0 - i32(4)];\n }\n return _S2;\n}\n\nfn thresholdBand_0( value_0 : f32, cutCount_0 : i32, cutsLo_1 : vec4<f32>, cutsHi_1 : vec4<f32>) -> i32\n{\n var band_0 : i32 = i32(0);\n var i_1 : i32 = i32(0);\n for(;;)\n {\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n break;\n }\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n band_0 = i_1 + i32(1);\n }\n i_1 = i_1 + i32(1);\n }\n return band_0;\n}\n\nfn log1pf_0( x_0 : f32) -> f32\n{\n var u_1 : f32 = 1.0f + x_0;\n var _S3 : f32;\n if(u_1 == 1.0f)\n {\n _S3 = x_0;\n }\n else\n {\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0f));\n }\n return _S3;\n}\n\nfn symlogTransform_0( x_1 : f32, c_1 : f32) -> f32\n{\n return f32((i32(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\nfn normalizeScoreUnclamped_0( score_0 : f32, domainMin_1 : f32, domainMax_1 : f32, scaleType_0 : i32, symlogConstant_0 : f32) -> f32\n{\n var tMax_0 : f32;\n var tMin_0 : f32;\n var t_2 : f32;\n if(scaleType_0 == i32(2))\n {\n var _S4 : f32 = symlogTransform_0(score_0, symlogConstant_0);\n var _S5 : f32 = symlogTransform_0(domainMin_1, symlogConstant_0);\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n tMin_0 = _S5;\n t_2 = _S4;\n }\n else\n {\n if(scaleType_0 == i32(1))\n {\n if(domainMin_1 > 0.0f)\n {\n tMax_0 = domainMin_1;\n }\n else\n {\n tMax_0 = 1.0f;\n }\n var _S6 : f32 = log2(max(score_0, tMax_0));\n var _S7 : f32 = log2(tMax_0);\n tMax_0 = log2(max(domainMax_1, tMax_0));\n tMin_0 = _S7;\n t_2 = _S6;\n }\n else\n {\n tMax_0 = domainMax_1;\n tMin_0 = domainMin_1;\n t_2 = score_0;\n }\n }\n var tRange_0 : f32 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0f)\n {\n if(t_2 > tMin_0)\n {\n tMax_0 = 1.0f;\n }\n else\n {\n tMax_0 = 0.0f;\n }\n return tMax_0;\n }\n return (t_2 - tMin_0) / tRange_0;\n}\n\nfn normalizeScore_0( score_1 : f32, domainMin_2 : f32, domainMax_2 : f32, scaleType_1 : i32, symlogConstant_1 : f32) -> f32\n{\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0f, 1.0f);\n}\n\nfn rowTableWidth_0( keys_0 : u32) -> u32\n{\n return max(min(keys_0, u32(2048)), u32(1));\n}\n\nfn rowTablePlaneHeight_0( keys_1 : u32) -> u32\n{\n var w_0 : u32 = rowTableWidth_0(keys_1);\n var _S8 : u32 = (keys_1 + w_0 - u32(1)) / w_0;\n return max(_S8, u32(1));\n}\n\nfn rowTableTexelX_0( key_0 : u32, keys_2 : u32) -> u32\n{\n var _S9 : u32 = key_0 % rowTableWidth_0(keys_2);\n return _S9;\n}\n\nfn rowTableTexelY_0( key_1 : u32, keys_3 : u32) -> u32\n{\n var _S10 : u32 = key_1 / rowTableWidth_0(keys_3);\n return _S10;\n}\n\nfn byteOf_0( channel_0 : f32) -> u32\n{\n return u32(channel_0 * 255.0f + 0.5f);\n}\n\nstruct RowPlacement_0\n{\n hidden_0 : bool,\n slot_0 : u32,\n color_0 : vec4<f32>,\n};\n\nfn rowTableLookup_0( table_texture_0 : texture_2d<f32>, table_sampler_0 : sampler, key_2 : u32, keys_4 : i32, own_0 : vec4<f32>) -> RowPlacement_0\n{\n var p_0 : RowPlacement_0;\n p_0.hidden_0 = false;\n p_0.slot_0 = key_2;\n p_0.color_0 = own_0;\n if(keys_4 < i32(0))\n {\n return p_0;\n }\n var n_0 : u32 = u32(keys_4);\n if(key_2 >= n_0)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n var h_0 : u32 = rowTablePlaneHeight_0(n_0);\n var _S11 : u32 = rowTableTexelX_0(key_2, n_0);\n var u_2 : f32 = (f32(_S11) + 0.5f) / f32(rowTableWidth_0(n_0));\n var rows_0 : f32 = f32(u32(2) * h_0);\n var y_0 : u32 = rowTableTexelY_0(key_2, n_0);\n var _S12 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0) + 0.5f) / rows_0)), (0.0f)));\n if((_S12.w) < 0.5f)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_0 = ((((byteOf_0(_S12.x)) | ((((byteOf_0(_S12.y)) << (u32(8))))))) | ((((byteOf_0(_S12.z)) << (u32(16))))));\n var _S13 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0 + h_0) + 0.5f) / rows_0)), (0.0f)));\n var _S14 : vec4<f32>;\n if((_S13.w) > 0.0f)\n {\n _S14 = _S13;\n }\n else\n {\n _S14 = own_0;\n }\n p_0.color_0 = _S14;\n return p_0;\n}\n\nfn hpSplitUint_0( value_1 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_1 & (u32(4095)));\n return vec2<f32>(f32(value_1 - lo_0), f32(lo_0));\n}\n\nfn hpToClipX_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_0 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_0;\n var step_0 : f32 = 2.0f / bpRange_0.z;\n return dot(vec3<f32>(-1.0f, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3<f32>(1.0f, step_0, step_0));\n}\n\nfn rowBandTopPx_0( rowOffsetPx_1 : f32, rowHeight_1 : f32, slot_1 : u32) -> f32\n{\n return rowOffsetPx_1 + rowHeight_1 * f32(slot_1);\n}\n\nfn valueToYPxScaled_0( value_2 : f32, domainMin_3 : f32, domainMax_3 : f32, h_1 : f32, scaleType_2 : i32, symlogConstant_2 : f32) -> f32\n{\n return (1.0f - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_1;\n}\n\nstruct CapsuleFrame_0\n{\n tangent_0 : vec2<f32>,\n normal_0 : vec2<f32>,\n};\n\nfn capsuleFrame_0( delta_0 : vec2<f32>, len_0 : f32) -> CapsuleFrame_0\n{\n var f_0 : CapsuleFrame_0;\n var _S15 : vec2<f32>;\n if(len_0 > 0.00009999999747379f)\n {\n _S15 = delta_0 / vec2<f32>(len_0);\n }\n else\n {\n _S15 = vec2<f32>(1.0f, 0.0f);\n }\n f_0.tangent_0 = _S15;\n f_0.normal_0 = vec2<f32>(- _S15.y, _S15.x);\n return f_0;\n}\n\nfn aaPx_0( dpr_0 : f32) -> f32\n{\n return 1.0f / max(dpr_0, 1.0f);\n}\n\nfn aaHalfPx_0( dpr_1 : f32) -> f32\n{\n return 0.5f * aaPx_0(dpr_1);\n}\n\nfn quadLocal_0( vid_0 : u32) -> vec2<f32>\n{\n var v_0 : u32 = vid_0 % u32(6);\n var _S16 : bool = v_0 == u32(0);\n var _S17 : bool;\n if(_S16)\n {\n _S17 = true;\n }\n else\n {\n _S17 = v_0 == u32(2);\n }\n if(_S17)\n {\n _S17 = true;\n }\n else\n {\n _S17 = v_0 == u32(3);\n }\n var _S18 : f32;\n if(_S17)\n {\n _S18 = 0.0f;\n }\n else\n {\n _S18 = 1.0f;\n }\n if(_S16)\n {\n _S17 = true;\n }\n else\n {\n _S17 = v_0 == u32(1);\n }\n if(_S17)\n {\n _S17 = true;\n }\n else\n {\n _S17 = v_0 == u32(4);\n }\n var _S19 : f32;\n if(_S17)\n {\n _S19 = 0.0f;\n }\n else\n {\n _S19 = 1.0f;\n }\n return vec2<f32>(_S18, _S19);\n}\n\nfn capsuleQuadLocal_0( vid_1 : u32, halfLenPx_0 : f32, halfWidthPx_0 : f32, dpr_2 : f32) -> vec2<f32>\n{\n var ext_0 : f32 = halfWidthPx_0 + aaHalfPx_0(dpr_2);\n var q_0 : vec2<f32> = quadLocal_0(vid_1) * vec2<f32>(2.0f) - vec2<f32>(1.0f);\n return vec2<f32>(q_0.x * (halfLenPx_0 + ext_0), q_0.y * ext_0);\n}\n\nfn pxToClipLen_0( px_0 : f32, size_0 : f32) -> f32\n{\n return px_0 * 2.0f / size_0;\n}\n\nfn yPxToClipY_0( yPx_0 : f32, canvasHeight_1 : f32) -> f32\n{\n return 1.0f - yPx_0 / canvasHeight_1 * 2.0f;\n}\n\nstruct VsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @interpolate(flat) @location(0) color_1 : vec4<f32>,\n @location(5) localPos_0 : vec2<f32>,\n @interpolate(flat) @location(1) segHalfLen_0 : f32,\n @interpolate(flat) @location(2) colorLine_0 : vec2<f32>,\n @interpolate(flat) @location(3) cutYsLo_0 : vec4<f32>,\n @interpolate(flat) @location(4) cutYsHi_0 : vec4<f32>,\n};\n\nstruct vertexInput_0\n{\n @location(0) x_2 : u32,\n @location(1) x2_0 : u32,\n @location(2) y_1 : f32,\n @location(3) color_2 : u32,\n @location(4) row_0 : u32,\n @location(5) prevX_0 : u32,\n @location(6) prevX2_0 : u32,\n @location(7) prevY_0 : f32,\n};\n\nfn markScaleColor_0( _S20 : texture_2d<f32>, _S21 : sampler, _S22 : u32, _S23 : i32, _S24 : f32, _S25 : f32, _S26 : f32, _S27 : i32, _S28 : vec4<f32>, _S29 : vec4<f32>) -> vec4<f32>\n{\n if(_S23 == i32(0))\n {\n return unpackRGBA_0(_S22);\n }\n if(_S22 == u32(2143289345))\n {\n return unpackRGBA_0(u32(4289703855));\n }\n var scaleType_3 : i32;\n if(((_S22 & (u32(2139095040)))) == u32(2139095040))\n {\n if(((_S22 & (u32(8388607)))) != u32(0))\n {\n return unpackRGBA_0(u32(4286611584));\n }\n var negative_0 : bool = ((_S22 & (u32(2147483648)))) != u32(0);\n if(_S23 == i32(3))\n {\n if(negative_0)\n {\n scaleType_3 = i32(0);\n }\n else\n {\n scaleType_3 = _S27;\n }\n return u_0.colorBands_0[scaleType_3];\n }\n var _S30 : f32;\n if(negative_0)\n {\n _S30 = 0.0f;\n }\n else\n {\n _S30 = 1.0f;\n }\n return rampColor_0(_S20, _S21, rampMidT_0(_S30, _S26));\n }\n var value_3 : f32 = (bitcast<f32>((_S22)));\n if(_S23 == i32(3))\n {\n return u_0.colorBands_0[thresholdBand_0(value_3, _S27, _S28, _S29)];\n }\n if(_S23 == i32(2))\n {\n scaleType_3 = i32(1);\n }\n else\n {\n scaleType_3 = i32(0);\n }\n return rampColor_0(_S20, _S21, rampMidT_0(normalizeScore_0(value_3, _S24, _S25, scaleType_3, 1.0f), _S26));\n}\n\nfn lineBpToClipX_0( _S31 : u32) -> f32\n{\n return hpToClipX_0(hpSplitUint_0(_S31), u_0.bpRangeX_0, u_0.zero_0);\n}\n\nfn lineValueYPx_0( _S32 : f32, _S33 : f32) -> f32\n{\n return _S33 + valueToYPxScaled_0(_S32, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\nfn lineColorYPx_0( _S34 : f32, _S35 : f32) -> f32\n{\n return _S35 + (1.0f - normalizeScoreUnclamped_0(_S34, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\nfn lineCutYsPx_0( _S36 : i32, _S37 : f32) -> vec4<f32>\n{\n var ys_0 : vec4<f32> = vec4<f32>(0.0f);\n var k_0 : i32 = i32(0);\n for(;;)\n {\n if(k_0 < i32(4))\n {\n }\n else\n {\n break;\n }\n var _S38 : i32 = _S36 + k_0;\n if(_S38 < (u_0.colorCutCount_0))\n {\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S38, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]), _S37);\n }\n k_0 = k_0 + i32(1);\n }\n return ys_0;\n}\n\n@vertex\nfn vs_main( _S39 : vertexInput_0, @builtin(vertex_index) vid_2 : u32) -> VsOut_0\n{\n var o_0 : VsOut_0;\n var _S40 : RowPlacement_0 = rowTableLookup_0(rowTable_texture_0, rowTable_sampler_0, _S39.row_0, u_0.rowTableKeys_0, markScaleColor_0(colorRamp_texture_0, colorRamp_sampler_0, _S39.color_2, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]));\n if(_S40.hidden_0)\n {\n o_0.position_0 = vec4<f32>(2.0f, 2.0f, 0.0f, 1.0f);\n var _S41 : vec4<f32> = vec4<f32>(0.0f);\n o_0.color_1 = _S41;\n var _S42 : vec2<f32> = vec2<f32>(0.0f);\n o_0.localPos_0 = _S42;\n o_0.segHalfLen_0 = 0.0f;\n o_0.colorLine_0 = _S42;\n o_0.cutYsLo_0 = _S41;\n o_0.cutYsHi_0 = _S41;\n return o_0;\n }\n var bandTop_0 : f32 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S40.slot_0);\n var hasPrev_0 : bool = (_S39.prevX_0) != u32(4294967295);\n var midCurrX_0 : f32 = (lineBpToClipX_0(_S39.x_2) + lineBpToClipX_0(_S39.x2_0)) * 0.5f;\n var midPrevX_0 : f32;\n if(hasPrev_0)\n {\n midPrevX_0 = (lineBpToClipX_0(_S39.prevX_0) + lineBpToClipX_0(_S39.prevX2_0)) * 0.5f;\n }\n else\n {\n midPrevX_0 = midCurrX_0;\n }\n var _S43 : f32 = lineValueYPx_0(_S39.y_1, bandTop_0);\n var prevYPx_0 : f32;\n if(hasPrev_0)\n {\n prevYPx_0 = lineValueYPx_0(_S39.prevY_0, bandTop_0);\n }\n else\n {\n prevYPx_0 = _S43;\n }\n var deltaPx_0 : vec2<f32> = vec2<f32>((midCurrX_0 - midPrevX_0) * u_0.viewportWidth_0 * 0.5f, _S43 - prevYPx_0);\n var len_1 : f32 = length(deltaPx_0);\n var f_1 : CapsuleFrame_0 = capsuleFrame_0(deltaPx_0, len_1);\n var _S44 : f32 = len_1 * 0.5f;\n var local_0 : vec2<f32> = capsuleQuadLocal_0(vid_2, _S44, u_0.lineWidth_0 * 0.5f, u_0.devicePixelRatio_0);\n var off_0 : vec2<f32> = f_1.tangent_0 * vec2<f32>(local_0.x) + f_1.normal_0 * vec2<f32>(local_0.y);\n o_0.position_0 = vec4<f32>((midPrevX_0 + midCurrX_0) * 0.5f + pxToClipLen_0(off_0.x, u_0.viewportWidth_0), yPxToClipY_0((prevYPx_0 + _S43) * 0.5f + off_0.y, u_0.canvasHeight_0), 0.0f, 1.0f);\n o_0.color_1 = _S40.color_0;\n o_0.localPos_0 = local_0;\n o_0.segHalfLen_0 = _S44;\n var _S45 : f32 = lineColorYPx_0(_S39.y_1, bandTop_0);\n var prevColorYPx_0 : f32;\n if(hasPrev_0)\n {\n prevColorYPx_0 = lineColorYPx_0(_S39.prevY_0, bandTop_0);\n }\n else\n {\n prevColorYPx_0 = _S45;\n }\n var _S46 : f32 = (prevColorYPx_0 + _S45) * 0.5f;\n if(len_1 > 0.00009999999747379f)\n {\n midPrevX_0 = (_S45 - prevColorYPx_0) / len_1;\n }\n else\n {\n midPrevX_0 = 0.0f;\n }\n o_0.colorLine_0 = vec2<f32>(_S46, midPrevX_0);\n o_0.cutYsLo_0 = lineCutYsPx_0(i32(0), bandTop_0);\n o_0.cutYsHi_0 = lineCutYsPx_0(i32(4), bandTop_0);\n return o_0;\n}\n\nfn capsuleDistPx_0( alongPx_0 : f32, acrossPx_0 : f32, halfLenPx_1 : f32) -> f32\n{\n var _S47 : f32 = max(abs(alongPx_0) - halfLenPx_1, 0.0f);\n return sqrt(_S47 * _S47 + acrossPx_0 * acrossPx_0);\n}\n\nfn capsuleDist_0( local_1 : vec2<f32>, halfLenPx_2 : f32) -> f32\n{\n return capsuleDistPx_0(local_1.x, local_1.y, halfLenPx_2);\n}\n\nfn aaRamp_0( signedInk_0 : f32, widthPx_0 : f32) -> f32\n{\n return clamp(signedInk_0 / widthPx_0 + 0.5f, 0.0f, 1.0f);\n}\n\nfn edgeCoverage_0( signedInkCssPx_0 : f32, dpr_3 : f32) -> f32\n{\n return aaRamp_0(signedInkCssPx_0, aaPx_0(dpr_3));\n}\n\nfn thresholdBandAtYPx_0( yPx_1 : f32, cutCount_1 : i32, cutYsLo_1 : vec4<f32>, cutYsHi_1 : vec4<f32>) -> i32\n{\n var band_1 : i32 = i32(0);\n var i_2 : i32 = i32(0);\n for(;;)\n {\n if(i_2 < cutCount_1)\n {\n }\n else\n {\n break;\n }\n if(yPx_1 <= (colorCutAt_0(i_2, cutYsLo_1, cutYsHi_1)))\n {\n band_1 = i_2 + i32(1);\n }\n i_2 = i_2 + i32(1);\n }\n return band_1;\n}\n\nstruct pixelOutput_0\n{\n @location(0) output_0 : vec4<f32>,\n};\n\nstruct pixelInput_0\n{\n @interpolate(flat) @location(0) color_3 : vec4<f32>,\n @location(5) localPos_1 : vec2<f32>,\n @interpolate(flat) @location(1) segHalfLen_1 : f32,\n @interpolate(flat) @location(2) colorLine_1 : vec2<f32>,\n @interpolate(flat) @location(3) cutYsLo_2 : vec4<f32>,\n @interpolate(flat) @location(4) cutYsHi_2 : vec4<f32>,\n};\n\nfn lineFragmentColor_0( _S48 : f32, _S49 : vec4<f32>, _S50 : vec4<f32>, _S51 : vec4<f32>) -> vec4<f32>\n{\n if((u_0.rampMode_0) != i32(3))\n {\n return _S51;\n }\n return u_0.colorBands_0[thresholdBandAtYPx_0(_S48, u_0.colorCutCount_0, _S49, _S50)];\n}\n\n@fragment\nfn fs_main( _S52 : pixelInput_0, @builtin(position) position_1 : vec4<f32>) -> pixelOutput_0\n{\n var alpha_0 : f32 = edgeCoverage_0(u_0.lineWidth_0 * 0.5f - capsuleDist_0(_S52.localPos_1, _S52.segHalfLen_1), u_0.devicePixelRatio_0);\n if(alpha_0 <= 0.0f)\n {\n discard;\n }\n var _S53 : vec4<f32> = lineFragmentColor_0(_S52.colorLine_1.x + _S52.colorLine_1.y * clamp(_S52.localPos_1.x, - _S52.segHalfLen_1, _S52.segHalfLen_1), _S52.cutYsLo_2, _S52.cutYsHi_2, _S52.color_3);\n var _S54 : pixelOutput_0 = pixelOutput_0( vec4<f32>(_S53.xyz * vec3<f32>(alpha_0), _S53.w * alpha_0) );\n return _S54;\n}\n\n";
|
|
3
|
+
export const WGSL_SOURCE = "struct Uniforms_std140_0\n{\n @align(16) bpRangeX_0 : vec3<f32>,\n @align(4) canvasHeight_0 : f32,\n @align(16) domainMin_0 : f32,\n @align(4) domainMax_0 : f32,\n @align(8) valueScaleType_0 : i32,\n @align(4) valueSymlogConstant_0 : f32,\n @align(16) rampMode_0 : i32,\n @align(4) rampMin_0 : f32,\n @align(8) rampMax_0 : f32,\n @align(4) rampMidNorm_0 : f32,\n @align(16) colorCutCount_0 : i32,\n @align(16) colorCuts_0 : array<vec4<f32>, i32(2)>,\n @align(16) colorBands_0 : array<vec4<f32>, i32(9)>,\n @align(16) colorFromY_0 : i32,\n @align(4) rowHeight_0 : f32,\n @align(8) rowBandPx_0 : f32,\n @align(4) rowOffsetPx_0 : f32,\n @align(16) origin_0 : f32,\n @align(4) lineWidth_0 : f32,\n @align(8) zero_0 : f32,\n @align(4) viewportWidth_0 : f32,\n @align(16) devicePixelRatio_0 : f32,\n @align(4) rowTableKeys_0 : i32,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : Uniforms_std140_0;\n@binding(2) @group(0) var colorRamp_texture_0 : texture_2d<f32>;\n\n@binding(3) @group(0) var colorRamp_sampler_0 : sampler;\n\n@binding(4) @group(0) var rowTable_texture_0 : texture_2d<f32>;\n\n@binding(5) @group(0) var rowTable_sampler_0 : sampler;\n\nfn unpackRGBA_0( c_0 : u32) -> vec4<f32>\n{\n return vec4<f32>(f32((((c_0 >> (u32(0)))) & (u32(255)))), f32((((c_0 >> (u32(8)))) & (u32(255)))), f32((((c_0 >> (u32(16)))) & (u32(255)))), f32((((c_0 >> (u32(24)))) & (u32(255))))) / vec4<f32>(255.0f);\n}\n\nfn rampMidT_0( t_0 : f32, mid_0 : f32) -> f32\n{\n var _S1 : f32 = max(mid_0, 1.0f - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0f * _S1), 0.0f, 1.0f);\n}\n\nfn rampColor_0( ramp_texture_0 : texture_2d<f32>, ramp_sampler_0 : sampler, t_1 : f32) -> vec4<f32>\n{\n return (textureSampleLevel((ramp_texture_0), (ramp_sampler_0), (vec2<f32>((clamp(t_1, 0.0f, 1.0f) * 255.0f + 0.5f) / 256.0f, 0.5f)), (0.0f)));\n}\n\nfn colorCutAt_0( i_0 : i32, cutsLo_0 : vec4<f32>, cutsHi_0 : vec4<f32>) -> f32\n{\n var _S2 : f32;\n if(i_0 < i32(4))\n {\n _S2 = cutsLo_0[i_0];\n }\n else\n {\n _S2 = cutsHi_0[i_0 - i32(4)];\n }\n return _S2;\n}\n\nfn thresholdBand_0( value_0 : f32, cutCount_0 : i32, cutsLo_1 : vec4<f32>, cutsHi_1 : vec4<f32>) -> i32\n{\n var band_0 : i32 = i32(0);\n var i_1 : i32 = i32(0);\n for(;;)\n {\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n break;\n }\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n band_0 = i_1 + i32(1);\n }\n i_1 = i_1 + i32(1);\n }\n return band_0;\n}\n\nfn log1pf_0( x_0 : f32) -> f32\n{\n var u_1 : f32 = 1.0f + x_0;\n var _S3 : f32;\n if(u_1 == 1.0f)\n {\n _S3 = x_0;\n }\n else\n {\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0f));\n }\n return _S3;\n}\n\nfn symlogTransform_0( x_1 : f32, c_1 : f32) -> f32\n{\n return f32((i32(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\nfn normalizeScoreUnclamped_0( score_0 : f32, domainMin_1 : f32, domainMax_1 : f32, scaleType_0 : i32, symlogConstant_0 : f32) -> f32\n{\n var tMax_0 : f32;\n var tMin_0 : f32;\n var t_2 : f32;\n if(scaleType_0 == i32(2))\n {\n var _S4 : f32 = symlogTransform_0(score_0, symlogConstant_0);\n var _S5 : f32 = symlogTransform_0(domainMin_1, symlogConstant_0);\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n tMin_0 = _S5;\n t_2 = _S4;\n }\n else\n {\n if(scaleType_0 == i32(1))\n {\n if(domainMin_1 > 0.0f)\n {\n tMax_0 = domainMin_1;\n }\n else\n {\n tMax_0 = 1.0f;\n }\n var _S6 : f32 = log2(max(score_0, tMax_0));\n var _S7 : f32 = log2(tMax_0);\n tMax_0 = log2(max(domainMax_1, tMax_0));\n tMin_0 = _S7;\n t_2 = _S6;\n }\n else\n {\n tMax_0 = domainMax_1;\n tMin_0 = domainMin_1;\n t_2 = score_0;\n }\n }\n var tRange_0 : f32 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0f)\n {\n if(t_2 > tMin_0)\n {\n tMax_0 = 1.0f;\n }\n else\n {\n tMax_0 = 0.0f;\n }\n return tMax_0;\n }\n return (t_2 - tMin_0) / tRange_0;\n}\n\nfn normalizeScore_0( score_1 : f32, domainMin_2 : f32, domainMax_2 : f32, scaleType_1 : i32, symlogConstant_1 : f32) -> f32\n{\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0f, 1.0f);\n}\n\nfn rowTableWidth_0( keys_0 : u32) -> u32\n{\n return max(min(keys_0, u32(2048)), u32(1));\n}\n\nfn rowTablePlaneHeight_0( keys_1 : u32) -> u32\n{\n var w_0 : u32 = rowTableWidth_0(keys_1);\n var _S8 : u32 = (keys_1 + w_0 - u32(1)) / w_0;\n return max(_S8, u32(1));\n}\n\nfn rowTableTexelX_0( key_0 : u32, keys_2 : u32) -> u32\n{\n var _S9 : u32 = key_0 % rowTableWidth_0(keys_2);\n return _S9;\n}\n\nfn rowTableTexelY_0( key_1 : u32, keys_3 : u32) -> u32\n{\n var _S10 : u32 = key_1 / rowTableWidth_0(keys_3);\n return _S10;\n}\n\nfn byteOf_0( channel_0 : f32) -> u32\n{\n return u32(channel_0 * 255.0f + 0.5f);\n}\n\nstruct RowPlacement_0\n{\n hidden_0 : bool,\n slot_0 : u32,\n color_0 : vec4<f32>,\n overridden_0 : bool,\n};\n\nfn rowTableLookup_0( table_texture_0 : texture_2d<f32>, table_sampler_0 : sampler, key_2 : u32, keys_4 : i32, own_0 : vec4<f32>) -> RowPlacement_0\n{\n var p_0 : RowPlacement_0;\n p_0.hidden_0 = false;\n p_0.slot_0 = key_2;\n p_0.color_0 = own_0;\n p_0.overridden_0 = false;\n if(keys_4 < i32(0))\n {\n return p_0;\n }\n var n_0 : u32 = u32(keys_4);\n if(key_2 >= n_0)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n var h_0 : u32 = rowTablePlaneHeight_0(n_0);\n var _S11 : u32 = rowTableTexelX_0(key_2, n_0);\n var u_2 : f32 = (f32(_S11) + 0.5f) / f32(rowTableWidth_0(n_0));\n var rows_0 : f32 = f32(u32(2) * h_0);\n var y_0 : u32 = rowTableTexelY_0(key_2, n_0);\n var _S12 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0) + 0.5f) / rows_0)), (0.0f)));\n if((_S12.w) < 0.5f)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_0 = ((((byteOf_0(_S12.x)) | ((((byteOf_0(_S12.y)) << (u32(8))))))) | ((((byteOf_0(_S12.z)) << (u32(16))))));\n var _S13 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0 + h_0) + 0.5f) / rows_0)), (0.0f)));\n var _S14 : bool = (_S13.w) > 0.0f;\n p_0.overridden_0 = _S14;\n var _S15 : vec4<f32>;\n if(_S14)\n {\n _S15 = _S13;\n }\n else\n {\n _S15 = own_0;\n }\n p_0.color_0 = _S15;\n return p_0;\n}\n\nfn hpSplitUint_0( value_1 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_1 & (u32(4095)));\n return vec2<f32>(f32(value_1 - lo_0), f32(lo_0));\n}\n\nfn hpToClipX_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_0 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_0;\n var step_0 : f32 = 2.0f / bpRange_0.z;\n return dot(vec3<f32>(-1.0f, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3<f32>(1.0f, step_0, step_0));\n}\n\nfn rowBandTopPx_0( rowOffsetPx_1 : f32, rowHeight_1 : f32, slot_1 : u32) -> f32\n{\n return rowOffsetPx_1 + rowHeight_1 * f32(slot_1);\n}\n\nfn valueToYPxScaled_0( value_2 : f32, domainMin_3 : f32, domainMax_3 : f32, h_1 : f32, scaleType_2 : i32, symlogConstant_2 : f32) -> f32\n{\n return (1.0f - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_1;\n}\n\nstruct CapsuleFrame_0\n{\n tangent_0 : vec2<f32>,\n normal_0 : vec2<f32>,\n};\n\nfn capsuleFrame_0( delta_0 : vec2<f32>, len_0 : f32) -> CapsuleFrame_0\n{\n var f_0 : CapsuleFrame_0;\n var _S16 : vec2<f32>;\n if(len_0 > 0.00009999999747379f)\n {\n _S16 = delta_0 / vec2<f32>(len_0);\n }\n else\n {\n _S16 = vec2<f32>(1.0f, 0.0f);\n }\n f_0.tangent_0 = _S16;\n f_0.normal_0 = vec2<f32>(- _S16.y, _S16.x);\n return f_0;\n}\n\nfn aaPx_0( dpr_0 : f32) -> f32\n{\n return 1.0f / max(dpr_0, 1.0f);\n}\n\nfn aaHalfPx_0( dpr_1 : f32) -> f32\n{\n return 0.5f * aaPx_0(dpr_1);\n}\n\nfn quadLocal_0( vid_0 : u32) -> vec2<f32>\n{\n var v_0 : u32 = vid_0 % u32(6);\n var _S17 : bool = v_0 == u32(0);\n var _S18 : bool;\n if(_S17)\n {\n _S18 = true;\n }\n else\n {\n _S18 = v_0 == u32(2);\n }\n if(_S18)\n {\n _S18 = true;\n }\n else\n {\n _S18 = v_0 == u32(3);\n }\n var _S19 : f32;\n if(_S18)\n {\n _S19 = 0.0f;\n }\n else\n {\n _S19 = 1.0f;\n }\n if(_S17)\n {\n _S18 = true;\n }\n else\n {\n _S18 = v_0 == u32(1);\n }\n if(_S18)\n {\n _S18 = true;\n }\n else\n {\n _S18 = v_0 == u32(4);\n }\n var _S20 : f32;\n if(_S18)\n {\n _S20 = 0.0f;\n }\n else\n {\n _S20 = 1.0f;\n }\n return vec2<f32>(_S19, _S20);\n}\n\nfn capsuleQuadLocal_0( vid_1 : u32, halfLenPx_0 : f32, halfWidthPx_0 : f32, dpr_2 : f32) -> vec2<f32>\n{\n var ext_0 : f32 = halfWidthPx_0 + aaHalfPx_0(dpr_2);\n var q_0 : vec2<f32> = quadLocal_0(vid_1) * vec2<f32>(2.0f) - vec2<f32>(1.0f);\n return vec2<f32>(q_0.x * (halfLenPx_0 + ext_0), q_0.y * ext_0);\n}\n\nfn pxToClipLen_0( px_0 : f32, size_0 : f32) -> f32\n{\n return px_0 * 2.0f / size_0;\n}\n\nfn yPxToClipY_0( yPx_0 : f32, canvasHeight_1 : f32) -> f32\n{\n return 1.0f - yPx_0 / canvasHeight_1 * 2.0f;\n}\n\nfn lineColorAlongY_0( rampMode_1 : i32, colorFromY_1 : i32, overridden_1 : bool) -> bool\n{\n var _S21 : bool;\n if(rampMode_1 == i32(3))\n {\n _S21 = colorFromY_1 != i32(0);\n }\n else\n {\n _S21 = false;\n }\n if(_S21)\n {\n _S21 = !overridden_1;\n }\n else\n {\n _S21 = false;\n }\n return _S21;\n}\n\nstruct VsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @interpolate(flat) @location(0) color_1 : vec4<f32>,\n @location(6) localPos_0 : vec2<f32>,\n @interpolate(flat) @location(1) segHalfLen_0 : f32,\n @interpolate(flat) @location(2) colorLine_0 : vec2<f32>,\n @interpolate(flat) @location(3) cutYsLo_0 : vec4<f32>,\n @interpolate(flat) @location(4) cutYsHi_0 : vec4<f32>,\n @interpolate(flat) @location(5) colorAlongY_0 : f32,\n};\n\nstruct vertexInput_0\n{\n @location(0) x_2 : u32,\n @location(1) x2_0 : u32,\n @location(2) y_1 : f32,\n @location(3) color_2 : u32,\n @location(4) row_0 : u32,\n @location(5) prevX_0 : u32,\n @location(6) prevX2_0 : u32,\n @location(7) prevY_0 : f32,\n};\n\nfn markScaleColor_0( _S22 : texture_2d<f32>, _S23 : sampler, _S24 : u32, _S25 : i32, _S26 : f32, _S27 : f32, _S28 : f32, _S29 : i32, _S30 : vec4<f32>, _S31 : vec4<f32>) -> vec4<f32>\n{\n if(_S25 == i32(0))\n {\n return unpackRGBA_0(_S24);\n }\n if(_S24 == u32(2143289345))\n {\n return unpackRGBA_0(u32(4289703855));\n }\n var scaleType_3 : i32;\n if(((_S24 & (u32(2139095040)))) == u32(2139095040))\n {\n if(((_S24 & (u32(8388607)))) != u32(0))\n {\n return unpackRGBA_0(u32(4286611584));\n }\n var negative_0 : bool = ((_S24 & (u32(2147483648)))) != u32(0);\n if(_S25 == i32(3))\n {\n if(negative_0)\n {\n scaleType_3 = i32(0);\n }\n else\n {\n scaleType_3 = _S29;\n }\n return u_0.colorBands_0[scaleType_3];\n }\n var _S32 : f32;\n if(negative_0)\n {\n _S32 = 0.0f;\n }\n else\n {\n _S32 = 1.0f;\n }\n return rampColor_0(_S22, _S23, rampMidT_0(_S32, _S28));\n }\n var value_3 : f32 = (bitcast<f32>((_S24)));\n if(_S25 == i32(3))\n {\n return u_0.colorBands_0[thresholdBand_0(value_3, _S29, _S30, _S31)];\n }\n if(_S25 == i32(2))\n {\n scaleType_3 = i32(1);\n }\n else\n {\n scaleType_3 = i32(0);\n }\n return rampColor_0(_S22, _S23, rampMidT_0(normalizeScore_0(value_3, _S26, _S27, scaleType_3, 1.0f), _S28));\n}\n\nfn lineBpToClipX_0( _S33 : u32) -> f32\n{\n return hpToClipX_0(hpSplitUint_0(_S33), u_0.bpRangeX_0, u_0.zero_0);\n}\n\nfn lineValueYPx_0( _S34 : f32, _S35 : f32) -> f32\n{\n return _S35 + valueToYPxScaled_0(_S34, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\nfn lineColorYPx_0( _S36 : f32, _S37 : f32) -> f32\n{\n return _S37 + (1.0f - normalizeScoreUnclamped_0(_S36, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\nfn lineCutYsPx_0( _S38 : i32, _S39 : f32) -> vec4<f32>\n{\n var ys_0 : vec4<f32> = vec4<f32>(0.0f);\n var k_0 : i32 = i32(0);\n for(;;)\n {\n if(k_0 < i32(4))\n {\n }\n else\n {\n break;\n }\n var _S40 : i32 = _S38 + k_0;\n if(_S40 < (u_0.colorCutCount_0))\n {\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S40, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]), _S39);\n }\n k_0 = k_0 + i32(1);\n }\n return ys_0;\n}\n\n@vertex\nfn vs_main( _S41 : vertexInput_0, @builtin(vertex_index) vid_2 : u32) -> VsOut_0\n{\n var o_0 : VsOut_0;\n var _S42 : RowPlacement_0 = rowTableLookup_0(rowTable_texture_0, rowTable_sampler_0, _S41.row_0, u_0.rowTableKeys_0, markScaleColor_0(colorRamp_texture_0, colorRamp_sampler_0, _S41.color_2, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]));\n if(_S42.hidden_0)\n {\n o_0.position_0 = vec4<f32>(2.0f, 2.0f, 0.0f, 1.0f);\n var _S43 : vec4<f32> = vec4<f32>(0.0f);\n o_0.color_1 = _S43;\n var _S44 : vec2<f32> = vec2<f32>(0.0f);\n o_0.localPos_0 = _S44;\n o_0.segHalfLen_0 = 0.0f;\n o_0.colorLine_0 = _S44;\n o_0.cutYsLo_0 = _S43;\n o_0.cutYsHi_0 = _S43;\n o_0.colorAlongY_0 = 0.0f;\n return o_0;\n }\n var bandTop_0 : f32 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S42.slot_0);\n var hasPrev_0 : bool = (_S41.prevX_0) != u32(4294967295);\n var midCurrX_0 : f32 = (lineBpToClipX_0(_S41.x_2) + lineBpToClipX_0(_S41.x2_0)) * 0.5f;\n var midPrevX_0 : f32;\n if(hasPrev_0)\n {\n midPrevX_0 = (lineBpToClipX_0(_S41.prevX_0) + lineBpToClipX_0(_S41.prevX2_0)) * 0.5f;\n }\n else\n {\n midPrevX_0 = midCurrX_0;\n }\n var _S45 : f32 = lineValueYPx_0(_S41.y_1, bandTop_0);\n var prevYPx_0 : f32;\n if(hasPrev_0)\n {\n prevYPx_0 = lineValueYPx_0(_S41.prevY_0, bandTop_0);\n }\n else\n {\n prevYPx_0 = _S45;\n }\n var deltaPx_0 : vec2<f32> = vec2<f32>((midCurrX_0 - midPrevX_0) * u_0.viewportWidth_0 * 0.5f, _S45 - prevYPx_0);\n var len_1 : f32 = length(deltaPx_0);\n var f_1 : CapsuleFrame_0 = capsuleFrame_0(deltaPx_0, len_1);\n var _S46 : f32 = len_1 * 0.5f;\n var local_0 : vec2<f32> = capsuleQuadLocal_0(vid_2, _S46, u_0.lineWidth_0 * 0.5f, u_0.devicePixelRatio_0);\n var off_0 : vec2<f32> = f_1.tangent_0 * vec2<f32>(local_0.x) + f_1.normal_0 * vec2<f32>(local_0.y);\n o_0.position_0 = vec4<f32>((midPrevX_0 + midCurrX_0) * 0.5f + pxToClipLen_0(off_0.x, u_0.viewportWidth_0), yPxToClipY_0((prevYPx_0 + _S45) * 0.5f + off_0.y, u_0.canvasHeight_0), 0.0f, 1.0f);\n o_0.color_1 = _S42.color_0;\n o_0.localPos_0 = local_0;\n o_0.segHalfLen_0 = _S46;\n var _S47 : f32 = lineColorYPx_0(_S41.y_1, bandTop_0);\n var prevColorYPx_0 : f32;\n if(hasPrev_0)\n {\n prevColorYPx_0 = lineColorYPx_0(_S41.prevY_0, bandTop_0);\n }\n else\n {\n prevColorYPx_0 = _S47;\n }\n var _S48 : f32 = (prevColorYPx_0 + _S47) * 0.5f;\n if(len_1 > 0.00009999999747379f)\n {\n midPrevX_0 = (_S47 - prevColorYPx_0) / len_1;\n }\n else\n {\n midPrevX_0 = 0.0f;\n }\n o_0.colorLine_0 = vec2<f32>(_S48, midPrevX_0);\n o_0.cutYsLo_0 = lineCutYsPx_0(i32(0), bandTop_0);\n o_0.cutYsHi_0 = lineCutYsPx_0(i32(4), bandTop_0);\n if(lineColorAlongY_0(u_0.rampMode_0, u_0.colorFromY_0, _S42.overridden_0))\n {\n midPrevX_0 = 1.0f;\n }\n else\n {\n midPrevX_0 = 0.0f;\n }\n o_0.colorAlongY_0 = midPrevX_0;\n return o_0;\n}\n\nfn capsuleDistPx_0( alongPx_0 : f32, acrossPx_0 : f32, halfLenPx_1 : f32) -> f32\n{\n var _S49 : f32 = max(abs(alongPx_0) - halfLenPx_1, 0.0f);\n return sqrt(_S49 * _S49 + acrossPx_0 * acrossPx_0);\n}\n\nfn capsuleDist_0( local_1 : vec2<f32>, halfLenPx_2 : f32) -> f32\n{\n return capsuleDistPx_0(local_1.x, local_1.y, halfLenPx_2);\n}\n\nfn aaRamp_0( signedInk_0 : f32, widthPx_0 : f32) -> f32\n{\n return clamp(signedInk_0 / widthPx_0 + 0.5f, 0.0f, 1.0f);\n}\n\nfn edgeCoverage_0( signedInkCssPx_0 : f32, dpr_3 : f32) -> f32\n{\n return aaRamp_0(signedInkCssPx_0, aaPx_0(dpr_3));\n}\n\nfn thresholdBandAtYPx_0( yPx_1 : f32, cutCount_1 : i32, cutYsLo_1 : vec4<f32>, cutYsHi_1 : vec4<f32>) -> i32\n{\n var band_1 : i32 = i32(0);\n var i_2 : i32 = i32(0);\n for(;;)\n {\n if(i_2 < cutCount_1)\n {\n }\n else\n {\n break;\n }\n if(yPx_1 <= (colorCutAt_0(i_2, cutYsLo_1, cutYsHi_1)))\n {\n band_1 = i_2 + i32(1);\n }\n i_2 = i_2 + i32(1);\n }\n return band_1;\n}\n\nstruct pixelOutput_0\n{\n @location(0) output_0 : vec4<f32>,\n};\n\nstruct pixelInput_0\n{\n @interpolate(flat) @location(0) color_3 : vec4<f32>,\n @location(6) localPos_1 : vec2<f32>,\n @interpolate(flat) @location(1) segHalfLen_1 : f32,\n @interpolate(flat) @location(2) colorLine_1 : vec2<f32>,\n @interpolate(flat) @location(3) cutYsLo_2 : vec4<f32>,\n @interpolate(flat) @location(4) cutYsHi_2 : vec4<f32>,\n @interpolate(flat) @location(5) colorAlongY_1 : f32,\n};\n\nfn lineFragmentColor_0( _S50 : f32, _S51 : vec4<f32>, _S52 : vec4<f32>, _S53 : vec4<f32>, _S54 : f32) -> vec4<f32>\n{\n if(_S54 < 0.5f)\n {\n return _S53;\n }\n return u_0.colorBands_0[thresholdBandAtYPx_0(_S50, u_0.colorCutCount_0, _S51, _S52)];\n}\n\n@fragment\nfn fs_main( _S55 : pixelInput_0, @builtin(position) position_1 : vec4<f32>) -> pixelOutput_0\n{\n var alpha_0 : f32 = edgeCoverage_0(u_0.lineWidth_0 * 0.5f - capsuleDist_0(_S55.localPos_1, _S55.segHalfLen_1), u_0.devicePixelRatio_0);\n if(alpha_0 <= 0.0f)\n {\n discard;\n }\n var _S56 : vec4<f32> = lineFragmentColor_0(_S55.colorLine_1.x + _S55.colorLine_1.y * clamp(_S55.localPos_1.x, - _S55.segHalfLen_1, _S55.segHalfLen_1), _S55.cutYsLo_2, _S55.cutYsHi_2, _S55.color_3, _S55.colorAlongY_1);\n var _S57 : pixelOutput_0 = pixelOutput_0( vec4<f32>(_S56.xyz * vec3<f32>(alpha_0), _S56.w * alpha_0) );\n return _S57;\n}\n\n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function lineColorAlongY(rampMode: number, colorFromY: number, overridden: boolean): boolean;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from lineCommon.slang.
|
|
2
|
+
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
+
// Scalar twins of lineCommon.slang, transliterated from slangc's WGSL so
|
|
4
|
+
// the Canvas2D and SVG paths run the shader's own math. See adr-051.
|
|
5
|
+
export function lineColorAlongY(rampMode, colorFromY, overridden) {
|
|
6
|
+
let _t0;
|
|
7
|
+
if ((rampMode == 3)) {
|
|
8
|
+
_t0 = (colorFromY != 0);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
_t0 = false;
|
|
12
|
+
}
|
|
13
|
+
if (_t0) {
|
|
14
|
+
_t0 = !overridden;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
_t0 = false;
|
|
18
|
+
}
|
|
19
|
+
return _t0;
|
|
20
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nuniform sampler2D u_colorRamp;\n\n\nuniform sampler2D u_rowTable;\n\n\nvec4 unpackRGBA_0(uint c_0)\n{\n\n return vec4(float((c_0 >> 0U) & 255U), float((c_0 >> 8U) & 255U), float((c_0 >> 16U) & 255U), float((c_0 >> 24U) & 255U)) / 255.0;\n}\n\n\nfloat rampMidT_0(float t_0, float mid_0)\n{\n\n float _S1 = max(mid_0, 1.0 - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0 * _S1), 0.0, 1.0);\n}\n\n\nfloat colorCutAt_0(int i_0, vec4 cutsLo_0, vec4 cutsHi_0)\n{\n\n float _S2;\n if(i_0 < 4)\n {\n\n _S2 = cutsLo_0[i_0];\n\n }\n else\n {\n\n _S2 = cutsHi_0[i_0 - 4];\n\n }\n\n return _S2;\n}\n\n\nint thresholdBand_0(float value_0, int cutCount_0, vec4 cutsLo_1, vec4 cutsHi_1)\n{\n\n int band_0 = 0;\n\n int i_1 = 0;\n\n for(;;)\n {\n\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n\n break;\n }\n\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n\n band_0 = i_1 + 1;\n\n }\n\n i_1 = i_1 + 1;\n\n }\n\n return band_0;\n}\n\n\nfloat log1pf_0(float x_0)\n{\n\n float u_1 = 1.0 + x_0;\n\n float _S3;\n if(u_1 == 1.0)\n {\n\n _S3 = x_0;\n\n }\n else\n {\n\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0));\n\n }\n\n return _S3;\n}\n\nfloat symlogTransform_0(float x_1, float c_1)\n{\n\n return float((int(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\n\nfloat normalizeScoreUnclamped_0(float score_0, float domainMin_1, float domainMax_1, int scaleType_0, float symlogConstant_0)\n{\n\n float tMax_0;\n\n float tMin_0;\n\n float t_1;\n\n\n\n if(scaleType_0 == 2)\n {\n\n float _S4 = symlogTransform_0(score_0, symlogConstant_0);\n float _S5 = symlogTransform_0(domainMin_1, symlogConstant_0);\n\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n\n tMin_0 = _S5;\n\n t_1 = _S4;\n\n }\n else\n {\n\n if(scaleType_0 == 1)\n {\n if(domainMin_1 > 0.0)\n {\n\n tMax_0 = domainMin_1;\n\n }\n else\n {\n\n tMax_0 = 1.0;\n\n }\n float _S6 = log2(max(score_0, tMax_0));\n float _S7 = log2(tMax_0);\n\n tMax_0 = log2(max(domainMax_1, tMax_0));\n\n tMin_0 = _S7;\n\n t_1 = _S6;\n\n }\n else\n {\n\n tMax_0 = domainMax_1;\n\n tMin_0 = domainMin_1;\n\n t_1 = score_0;\n\n }\n\n }\n\n float tRange_0 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0)\n {\n\n if(t_1 > tMin_0)\n {\n\n tMax_0 = 1.0;\n\n }\n else\n {\n\n tMax_0 = 0.0;\n\n }\n\n return tMax_0;\n }\n return (t_1 - tMin_0) / tRange_0;\n}\n\nfloat normalizeScore_0(float score_1, float domainMin_2, float domainMax_2, int scaleType_1, float symlogConstant_1)\n{\n\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0, 1.0);\n}\n\n\nuint rowTableWidth_0(uint keys_0)\n{\n\n return max(min(keys_0, 2048U), 1U);\n}\n\nuint rowTablePlaneHeight_0(uint keys_1)\n{\n\n uint w_0 = rowTableWidth_0(keys_1);\n uint _S8 = (keys_1 + w_0 - 1U) / w_0;\n\n return max(_S8, 1U);\n}\n\nuint rowTableTexelX_0(uint key_0, uint keys_2)\n{\n\n uint _S9 = key_0 % rowTableWidth_0(keys_2);\n\n return _S9;\n}\n\n\nuint rowTableTexelY_0(uint key_1, uint keys_3)\n{\n\n uint _S10 = key_1 / rowTableWidth_0(keys_3);\n\n return _S10;\n}\n\n\nuint byteOf_0(float channel_0)\n{\n\n return uint(channel_0 * 255.0 + 0.5);\n}\n\n\nvec2 hpSplitUint_0(uint value_1)\n{\n\n uint lo_0 = value_1 & 4095U;\n\n return vec2(float(value_1 - lo_0), float(lo_0));\n}\n\n\nfloat hpToClipX_0(vec2 splitPos_0, vec3 bpRange_0, float hpZero_0)\n{\n\n float floorBp_0 = -3.00000000549775576e+38 + hpZero_0;\n float step_0 = 2.0 / bpRange_0.z;\n\n\n return dot(vec3(-1.0, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3(1.0, step_0, step_0));\n}\n\n\nfloat rowBandTopPx_0(float rowOffsetPx_1, float rowHeight_1, uint slot_0)\n{\n\n return rowOffsetPx_1 + rowHeight_1 * float(slot_0);\n}\n\n\nfloat valueToYPxScaled_0(float value_2, float domainMin_3, float domainMax_3, float h_0, int scaleType_2, float symlogConstant_2)\n{\n\n return (1.0 - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_0;\n}\n\n\nfloat lineValueYPx_0(float _S11, float _S12)\n{\n\n return _S12 + valueToYPxScaled_0(_S11, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\n\nfloat neighbourYPx_0(float neighbour_0, float bandTop_0)\n{\n\n float _S13;\n if(neighbour_0 < -1.50000000274887788e+38)\n {\n\n _S13 = u_0.origin_0;\n\n }\n else\n {\n\n _S13 = neighbour_0;\n\n }\n\n return lineValueYPx_0(_S13, bandTop_0);\n}\n\n\nfloat pxToClipLen_0(float px_0, float size_0)\n{\n\n return px_0 * 2.0 / size_0;\n}\n\n\nvec2 quadLocal_0(uint vid_0)\n{\n\n uint v_0 = vid_0 % 6U;\n\n bool _S14 = v_0 == 0U;\n\n bool _S15;\n\n if(_S14)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 2U;\n\n }\n\n if(_S15)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 3U;\n\n }\n\n float _S16;\n\n if(_S15)\n {\n\n _S16 = 0.0;\n\n }\n else\n {\n\n _S16 = 1.0;\n\n }\n if(_S14)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 1U;\n\n }\n\n if(_S15)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 4U;\n\n }\n\n float _S17;\n\n if(_S15)\n {\n\n _S17 = 0.0;\n\n }\n else\n {\n\n _S17 = 1.0;\n\n }\n\n return vec2(_S16, _S17);\n}\n\n\nfloat yPxToClipY_0(float yPx_0, float canvasHeight_1)\n{\n\n return 1.0 - yPx_0 / canvasHeight_1 * 2.0;\n}\n\n\nflat out vec4 v_color;\n\n\nflat out vec2 v_colorLine;\n\n\nflat out vec4 v_cutYsLo;\n\n\nflat out vec4 v_cutYsHi;\n\n\nout float v_yPx;\n\n\nlayout(location = 0)\nin uint a_x;\n\n\nlayout(location = 1)\nin uint a_x2;\n\n\nlayout(location = 2)\nin float a_y;\n\n\nlayout(location = 3)\nin uint a_color;\n\n\nlayout(location = 4)\nin uint a_row;\n\n\nlayout(location = 5)\nin float a_prevY;\n\n\nlayout(location = 6)\nin float a_nextY;\n\n\nstruct VsOut_0\n{\n vec4 position_0;\n vec4 color_0;\n vec2 colorLine_0;\n vec4 cutYsLo_0;\n vec4 cutYsHi_0;\n float yPx_1;\n};\n\n\nvec4 rampColor_0(float _S18)\n{\n\n return (textureLod((u_colorRamp), (vec2((clamp(_S18, 0.0, 1.0) * 255.0 + 0.5) / 256.0, 0.5)), (0.0)));\n}\n\n\nvec4 markScaleColor_0(uint _S19, int _S20, float _S21, float _S22, float _S23, int _S24, vec4 _S25, vec4 _S26)\n{\n\n if(_S20 == 0)\n {\n\n return unpackRGBA_0(_S19);\n }\n if(_S19 == 2143289345U)\n {\n\n return unpackRGBA_0(4289703855U);\n }\n\n int scaleType_3;\n\n if((_S19 & 2139095040U) == 2139095040U)\n {\n\n if((_S19 & 8388607U) != 0U)\n {\n\n return unpackRGBA_0(4286611584U);\n }\n\n bool negative_0 = (_S19 & 2147483648U) != 0U;\n if(_S20 == 3)\n {\n\n if(negative_0)\n {\n\n scaleType_3 = 0;\n\n }\n else\n {\n\n scaleType_3 = _S24;\n\n }\n\n return u_0.colorBands_0[scaleType_3];\n }\n\n float _S27;\n\n if(negative_0)\n {\n\n _S27 = 0.0;\n\n }\n else\n {\n\n _S27 = 1.0;\n\n }\n\n return rampColor_0(rampMidT_0(_S27, _S23));\n }\n float value_3 = uintBitsToFloat(_S19);\n if(_S20 == 3)\n {\n\n return u_0.colorBands_0[thresholdBand_0(value_3, _S24, _S25, _S26)];\n }\n if(_S20 == 2)\n {\n\n scaleType_3 = 1;\n\n }\n else\n {\n\n scaleType_3 = 0;\n\n }\n return rampColor_0(rampMidT_0(normalizeScore_0(value_3, _S21, _S22, scaleType_3, 1.0), _S23));\n}\n\n\nstruct RowPlacement_0\n{\n bool hidden_0;\n uint slot_1;\n vec4 color_1;\n};\n\n\nRowPlacement_0 rowTableLookup_0(uint _S28, int _S29, vec4 _S30)\n{\n\n RowPlacement_0 p_0;\n p_0.hidden_0 = false;\n p_0.slot_1 = _S28;\n p_0.color_1 = _S30;\n if(_S29 < 0)\n {\n\n return p_0;\n }\n uint n_0 = uint(_S29);\n if(_S28 >= n_0)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n uint h_1 = rowTablePlaneHeight_0(n_0);\n uint _S31 = rowTableTexelX_0(_S28, n_0);\n\n float u_2 = (float(_S31) + 0.5) / float(rowTableWidth_0(n_0));\n float rows_0 = float(2U * h_1);\n uint y_0 = rowTableTexelY_0(_S28, n_0);\n vec4 s_0 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0) + 0.5) / rows_0)), (0.0)));\n if((s_0.w) < 0.5)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_1 = ((byteOf_0(s_0.x)) | ((byteOf_0(s_0.y)) << 8)) | ((byteOf_0(s_0.z)) << 16);\n vec4 c_2 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0 + h_1) + 0.5) / rows_0)), (0.0)));\n\n vec4 _S32;\n if((c_2.w) > 0.0)\n {\n\n _S32 = c_2;\n\n }\n else\n {\n\n _S32 = _S30;\n\n }\n\n p_0.color_1 = _S32;\n return p_0;\n}\n\n\nfloat lineBpToClipX_0(uint _S33)\n{\n\n return hpToClipX_0(hpSplitUint_0(_S33), u_0.bpRangeX_0, u_0.zero_0);\n}\n\n\nfloat lineColorYPx_0(float _S34, float _S35)\n{\n\n return _S35 + (1.0 - normalizeScoreUnclamped_0(_S34, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\n\nvec4 lineCutYsPx_0(int _S36, float _S37)\n{\n\n vec4 ys_0 = vec4(0.0);\n\n int k_0 = 0;\n for(;;)\n {\n\n if(k_0 < 4)\n {\n }\n else\n {\n\n break;\n }\n\n int _S38 = _S36 + k_0;\n\n if(_S38 < (u_0.colorCutCount_0))\n {\n\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S38, u_0.colorCuts_0[0], u_0.colorCuts_0[1]), _S37);\n\n }\n\n k_0 = k_0 + 1;\n\n }\n\n return ys_0;\n}\n\n\nvoid main()\n{\n\n VsOut_0 o_0;\n\n RowPlacement_0 _S39 = rowTableLookup_0(a_row, u_0.rowTableKeys_0, markScaleColor_0(a_color, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[0], u_0.colorCuts_0[1]));\n\n\n if(_S39.hidden_0)\n {\n\n o_0.position_0 = vec4(2.0, 2.0, 0.0, 1.0);\n const vec4 _S40 = vec4(0.0);\n\n o_0.color_0 = _S40;\n o_0.colorLine_0 = vec2(0.0);\n o_0.cutYsLo_0 = _S40;\n o_0.cutYsHi_0 = _S40;\n o_0.yPx_1 = 0.0;\n VsOut_0 _S41 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S41.color_0;\n\n v_colorLine = _S41.colorLine_0;\n\n v_cutYsLo = _S41.cutYsLo_0;\n\n v_cutYsHi = _S41.cutYsHi_0;\n\n v_yPx = _S41.yPx_1;\n\n return;\n }\n\n float _S42 = lineBpToClipX_0(a_x);\n\n float _S43 = lineBpToClipX_0(a_x2);\n\n\n\n float bandTop_1 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S39.slot_1);\n\n float _S44 = lineValueYPx_0(a_y, bandTop_1);\n\n float prevPx_0 = neighbourYPx_0(a_prevY, bandTop_1);\n float nextPx_0 = neighbourYPx_0(a_nextY, bandTop_1);\n float hw_0 = u_0.lineWidth_0 * 0.5;\n float hwx_0 = pxToClipLen_0(hw_0, u_0.viewportWidth_0);\n\n uint seg_0 = uint(gl_VertexID) / 6U;\n vec2 q_0 = quadLocal_0(uint(gl_VertexID));\n\n float sx_0;\n\n float sy_0;\n\n vec2 colorLine_1;\n\n\n\n if(seg_0 == 0U)\n {\n float _S45 = max(prevPx_0, _S44);\n\n float _S46 = min(prevPx_0, _S44);\n\n float _S47 = mix(_S45 + hw_0, _S46 - hw_0, q_0.y);\n vec2 _S48 = vec2(_S46, _S45);\n\n sx_0 = mix(_S42 - hwx_0, _S42 + hwx_0, q_0.x);\n\n sy_0 = _S47;\n\n colorLine_1 = _S48;\n\n }\n else\n {\n\n if(seg_0 == 1U)\n {\n float _S49 = mix(_S44 + hw_0, _S44 - hw_0, q_0.y);\n\n float _S50 = lineColorYPx_0(a_y, bandTop_1);\n\n vec2 _S51 = vec2(_S50, _S50);\n\n sx_0 = mix(min(_S42, _S43) - hwx_0, max(_S42, _S43) + hwx_0, q_0.x);\n\n sy_0 = _S49;\n\n colorLine_1 = _S51;\n\n }\n else\n {\n\n float _S52 = max(_S44, nextPx_0);\n\n float _S53 = min(_S44, nextPx_0);\n\n float _S54 = mix(_S52 + hw_0, _S53 - hw_0, q_0.y);\n vec2 _S55 = vec2(_S53, _S52);\n\n sx_0 = mix(_S43 - hwx_0, _S43 + hwx_0, q_0.x);\n\n sy_0 = _S54;\n\n colorLine_1 = _S55;\n\n }\n\n }\n\n o_0.position_0 = vec4(sx_0, yPxToClipY_0(sy_0, u_0.canvasHeight_0), 0.0, 1.0);\n o_0.color_0 = _S39.color_1;\n o_0.colorLine_0 = colorLine_1;\n o_0.cutYsLo_0 = lineCutYsPx_0(0, bandTop_1);\n o_0.cutYsHi_0 = lineCutYsPx_0(4, bandTop_1);\n o_0.yPx_1 = sy_0;\n VsOut_0 _S56 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S56.color_0;\n\n v_colorLine = _S56.colorLine_0;\n\n v_cutYsLo = _S56.cutYsLo_0;\n\n v_cutYsHi = _S56.cutYsHi_0;\n\n v_yPx = _S56.yPx_1;\n\n return;\n}\n\n";
|
|
2
|
-
export declare const GLSL_FRAGMENT = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nfloat colorCutAt_0(int i_0, vec4 cutsLo_0, vec4 cutsHi_0)\n{\n\n float _S1;\n if(i_0 < 4)\n {\n\n _S1 = cutsLo_0[i_0];\n\n }\n else\n {\n\n _S1 = cutsHi_0[i_0 - 4];\n\n }\n\n return _S1;\n}\n\n\nint thresholdBandAtYPx_0(float yPx_0, int cutCount_0, vec4 cutYsLo_0, vec4 cutYsHi_0)\n{\n\n int band_0 = 0;\n\n int i_1 = 0;\n\n for(;;)\n {\n\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n\n break;\n }\n\n if(yPx_0 <= (colorCutAt_0(i_1, cutYsLo_0, cutYsHi_0)))\n {\n\n band_0 = i_1 + 1;\n\n }\n\n i_1 = i_1 + 1;\n\n }\n\n return band_0;\n}\n\n\nlayout(location = 0)\nout vec4 entryPointParam_fs_main_0;\n\n\nflat in vec4 v_color;\n\n\nflat in vec2 v_colorLine;\n\n\nflat in vec4 v_cutYsLo;\n\n\nflat in vec4 v_cutYsHi;\n\n\nin float v_yPx;\n\n\nvec4 lineFragmentColor_0(float _S2, vec4 _S3, vec4 _S4, vec4 _S5)\n{\n\n if(
|
|
1
|
+
export declare const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n int colorFromY_0;\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nuniform sampler2D u_colorRamp;\n\n\nuniform sampler2D u_rowTable;\n\n\nvec4 unpackRGBA_0(uint c_0)\n{\n\n return vec4(float((c_0 >> 0U) & 255U), float((c_0 >> 8U) & 255U), float((c_0 >> 16U) & 255U), float((c_0 >> 24U) & 255U)) / 255.0;\n}\n\n\nfloat rampMidT_0(float t_0, float mid_0)\n{\n\n float _S1 = max(mid_0, 1.0 - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0 * _S1), 0.0, 1.0);\n}\n\n\nfloat colorCutAt_0(int i_0, vec4 cutsLo_0, vec4 cutsHi_0)\n{\n\n float _S2;\n if(i_0 < 4)\n {\n\n _S2 = cutsLo_0[i_0];\n\n }\n else\n {\n\n _S2 = cutsHi_0[i_0 - 4];\n\n }\n\n return _S2;\n}\n\n\nint thresholdBand_0(float value_0, int cutCount_0, vec4 cutsLo_1, vec4 cutsHi_1)\n{\n\n int band_0 = 0;\n\n int i_1 = 0;\n\n for(;;)\n {\n\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n\n break;\n }\n\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n\n band_0 = i_1 + 1;\n\n }\n\n i_1 = i_1 + 1;\n\n }\n\n return band_0;\n}\n\n\nfloat log1pf_0(float x_0)\n{\n\n float u_1 = 1.0 + x_0;\n\n float _S3;\n if(u_1 == 1.0)\n {\n\n _S3 = x_0;\n\n }\n else\n {\n\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0));\n\n }\n\n return _S3;\n}\n\nfloat symlogTransform_0(float x_1, float c_1)\n{\n\n return float((int(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\n\nfloat normalizeScoreUnclamped_0(float score_0, float domainMin_1, float domainMax_1, int scaleType_0, float symlogConstant_0)\n{\n\n float tMax_0;\n\n float tMin_0;\n\n float t_1;\n\n\n\n if(scaleType_0 == 2)\n {\n\n float _S4 = symlogTransform_0(score_0, symlogConstant_0);\n float _S5 = symlogTransform_0(domainMin_1, symlogConstant_0);\n\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n\n tMin_0 = _S5;\n\n t_1 = _S4;\n\n }\n else\n {\n\n if(scaleType_0 == 1)\n {\n if(domainMin_1 > 0.0)\n {\n\n tMax_0 = domainMin_1;\n\n }\n else\n {\n\n tMax_0 = 1.0;\n\n }\n float _S6 = log2(max(score_0, tMax_0));\n float _S7 = log2(tMax_0);\n\n tMax_0 = log2(max(domainMax_1, tMax_0));\n\n tMin_0 = _S7;\n\n t_1 = _S6;\n\n }\n else\n {\n\n tMax_0 = domainMax_1;\n\n tMin_0 = domainMin_1;\n\n t_1 = score_0;\n\n }\n\n }\n\n float tRange_0 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0)\n {\n\n if(t_1 > tMin_0)\n {\n\n tMax_0 = 1.0;\n\n }\n else\n {\n\n tMax_0 = 0.0;\n\n }\n\n return tMax_0;\n }\n return (t_1 - tMin_0) / tRange_0;\n}\n\nfloat normalizeScore_0(float score_1, float domainMin_2, float domainMax_2, int scaleType_1, float symlogConstant_1)\n{\n\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0, 1.0);\n}\n\n\nuint rowTableWidth_0(uint keys_0)\n{\n\n return max(min(keys_0, 2048U), 1U);\n}\n\nuint rowTablePlaneHeight_0(uint keys_1)\n{\n\n uint w_0 = rowTableWidth_0(keys_1);\n uint _S8 = (keys_1 + w_0 - 1U) / w_0;\n\n return max(_S8, 1U);\n}\n\nuint rowTableTexelX_0(uint key_0, uint keys_2)\n{\n\n uint _S9 = key_0 % rowTableWidth_0(keys_2);\n\n return _S9;\n}\n\n\nuint rowTableTexelY_0(uint key_1, uint keys_3)\n{\n\n uint _S10 = key_1 / rowTableWidth_0(keys_3);\n\n return _S10;\n}\n\n\nuint byteOf_0(float channel_0)\n{\n\n return uint(channel_0 * 255.0 + 0.5);\n}\n\n\nvec2 hpSplitUint_0(uint value_1)\n{\n\n uint lo_0 = value_1 & 4095U;\n\n return vec2(float(value_1 - lo_0), float(lo_0));\n}\n\n\nfloat hpToClipX_0(vec2 splitPos_0, vec3 bpRange_0, float hpZero_0)\n{\n\n float floorBp_0 = -3.00000000549775576e+38 + hpZero_0;\n float step_0 = 2.0 / bpRange_0.z;\n\n\n return dot(vec3(-1.0, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3(1.0, step_0, step_0));\n}\n\n\nfloat rowBandTopPx_0(float rowOffsetPx_1, float rowHeight_1, uint slot_0)\n{\n\n return rowOffsetPx_1 + rowHeight_1 * float(slot_0);\n}\n\n\nfloat valueToYPxScaled_0(float value_2, float domainMin_3, float domainMax_3, float h_0, int scaleType_2, float symlogConstant_2)\n{\n\n return (1.0 - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_0;\n}\n\n\nfloat lineValueYPx_0(float _S11, float _S12)\n{\n\n return _S12 + valueToYPxScaled_0(_S11, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\n\nfloat neighbourYPx_0(float neighbour_0, float bandTop_0)\n{\n\n float _S13;\n if(neighbour_0 < -1.50000000274887788e+38)\n {\n\n _S13 = u_0.origin_0;\n\n }\n else\n {\n\n _S13 = neighbour_0;\n\n }\n\n return lineValueYPx_0(_S13, bandTop_0);\n}\n\n\nfloat pxToClipLen_0(float px_0, float size_0)\n{\n\n return px_0 * 2.0 / size_0;\n}\n\n\nvec2 quadLocal_0(uint vid_0)\n{\n\n uint v_0 = vid_0 % 6U;\n\n bool _S14 = v_0 == 0U;\n\n bool _S15;\n\n if(_S14)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 2U;\n\n }\n\n if(_S15)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 3U;\n\n }\n\n float _S16;\n\n if(_S15)\n {\n\n _S16 = 0.0;\n\n }\n else\n {\n\n _S16 = 1.0;\n\n }\n if(_S14)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 1U;\n\n }\n\n if(_S15)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 4U;\n\n }\n\n float _S17;\n\n if(_S15)\n {\n\n _S17 = 0.0;\n\n }\n else\n {\n\n _S17 = 1.0;\n\n }\n\n return vec2(_S16, _S17);\n}\n\n\nfloat yPxToClipY_0(float yPx_0, float canvasHeight_1)\n{\n\n return 1.0 - yPx_0 / canvasHeight_1 * 2.0;\n}\n\n\nbool lineColorAlongY_0(int rampMode_1, int colorFromY_1, bool overridden_0)\n{\n\n bool _S18;\n if(rampMode_1 == 3)\n {\n\n _S18 = colorFromY_1 != 0;\n\n }\n else\n {\n\n _S18 = false;\n\n }\n\n if(_S18)\n {\n\n _S18 = !overridden_0;\n\n }\n else\n {\n\n _S18 = false;\n\n }\n\n return _S18;\n}\n\n\nflat out vec4 v_color;\n\n\nflat out vec2 v_colorLine;\n\n\nflat out vec4 v_cutYsLo;\n\n\nflat out vec4 v_cutYsHi;\n\n\nout float v_yPx;\n\n\nflat out float v_colorAlongY;\n\n\nlayout(location = 0)\nin uint a_x;\n\n\nlayout(location = 1)\nin uint a_x2;\n\n\nlayout(location = 2)\nin float a_y;\n\n\nlayout(location = 3)\nin uint a_color;\n\n\nlayout(location = 4)\nin uint a_row;\n\n\nlayout(location = 5)\nin float a_prevY;\n\n\nlayout(location = 6)\nin float a_nextY;\n\n\nstruct VsOut_0\n{\n vec4 position_0;\n vec4 color_0;\n vec2 colorLine_0;\n vec4 cutYsLo_0;\n vec4 cutYsHi_0;\n float yPx_1;\n float colorAlongY_0;\n};\n\n\nvec4 rampColor_0(float _S19)\n{\n\n return (textureLod((u_colorRamp), (vec2((clamp(_S19, 0.0, 1.0) * 255.0 + 0.5) / 256.0, 0.5)), (0.0)));\n}\n\n\nvec4 markScaleColor_0(uint _S20, int _S21, float _S22, float _S23, float _S24, int _S25, vec4 _S26, vec4 _S27)\n{\n\n if(_S21 == 0)\n {\n\n return unpackRGBA_0(_S20);\n }\n if(_S20 == 2143289345U)\n {\n\n return unpackRGBA_0(4289703855U);\n }\n\n int scaleType_3;\n\n if((_S20 & 2139095040U) == 2139095040U)\n {\n\n if((_S20 & 8388607U) != 0U)\n {\n\n return unpackRGBA_0(4286611584U);\n }\n\n bool negative_0 = (_S20 & 2147483648U) != 0U;\n if(_S21 == 3)\n {\n\n if(negative_0)\n {\n\n scaleType_3 = 0;\n\n }\n else\n {\n\n scaleType_3 = _S25;\n\n }\n\n return u_0.colorBands_0[scaleType_3];\n }\n\n float _S28;\n\n if(negative_0)\n {\n\n _S28 = 0.0;\n\n }\n else\n {\n\n _S28 = 1.0;\n\n }\n\n return rampColor_0(rampMidT_0(_S28, _S24));\n }\n float value_3 = uintBitsToFloat(_S20);\n if(_S21 == 3)\n {\n\n return u_0.colorBands_0[thresholdBand_0(value_3, _S25, _S26, _S27)];\n }\n if(_S21 == 2)\n {\n\n scaleType_3 = 1;\n\n }\n else\n {\n\n scaleType_3 = 0;\n\n }\n return rampColor_0(rampMidT_0(normalizeScore_0(value_3, _S22, _S23, scaleType_3, 1.0), _S24));\n}\n\n\nstruct RowPlacement_0\n{\n bool hidden_0;\n uint slot_1;\n vec4 color_1;\n bool overridden_1;\n};\n\n\nRowPlacement_0 rowTableLookup_0(uint _S29, int _S30, vec4 _S31)\n{\n\n RowPlacement_0 p_0;\n p_0.hidden_0 = false;\n p_0.slot_1 = _S29;\n p_0.color_1 = _S31;\n p_0.overridden_1 = false;\n if(_S30 < 0)\n {\n\n return p_0;\n }\n uint n_0 = uint(_S30);\n if(_S29 >= n_0)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n uint h_1 = rowTablePlaneHeight_0(n_0);\n uint _S32 = rowTableTexelX_0(_S29, n_0);\n\n float u_2 = (float(_S32) + 0.5) / float(rowTableWidth_0(n_0));\n float rows_0 = float(2U * h_1);\n uint y_0 = rowTableTexelY_0(_S29, n_0);\n vec4 s_0 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0) + 0.5) / rows_0)), (0.0)));\n if((s_0.w) < 0.5)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_1 = ((byteOf_0(s_0.x)) | ((byteOf_0(s_0.y)) << 8)) | ((byteOf_0(s_0.z)) << 16);\n vec4 c_2 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0 + h_1) + 0.5) / rows_0)), (0.0)));\n bool _S33 = (c_2.w) > 0.0;\n\n p_0.overridden_1 = _S33;\n\n vec4 _S34;\n if(_S33)\n {\n\n _S34 = c_2;\n\n }\n else\n {\n\n _S34 = _S31;\n\n }\n\n p_0.color_1 = _S34;\n return p_0;\n}\n\n\nfloat lineBpToClipX_0(uint _S35)\n{\n\n return hpToClipX_0(hpSplitUint_0(_S35), u_0.bpRangeX_0, u_0.zero_0);\n}\n\n\nfloat lineColorYPx_0(float _S36, float _S37)\n{\n\n return _S37 + (1.0 - normalizeScoreUnclamped_0(_S36, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\n\nvec4 lineCutYsPx_0(int _S38, float _S39)\n{\n\n vec4 ys_0 = vec4(0.0);\n\n int k_0 = 0;\n for(;;)\n {\n\n if(k_0 < 4)\n {\n }\n else\n {\n\n break;\n }\n\n int _S40 = _S38 + k_0;\n\n if(_S40 < (u_0.colorCutCount_0))\n {\n\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S40, u_0.colorCuts_0[0], u_0.colorCuts_0[1]), _S39);\n\n }\n\n k_0 = k_0 + 1;\n\n }\n\n return ys_0;\n}\n\n\nvoid main()\n{\n\n VsOut_0 o_0;\n\n RowPlacement_0 _S41 = rowTableLookup_0(a_row, u_0.rowTableKeys_0, markScaleColor_0(a_color, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[0], u_0.colorCuts_0[1]));\n\n\n if(_S41.hidden_0)\n {\n\n o_0.position_0 = vec4(2.0, 2.0, 0.0, 1.0);\n const vec4 _S42 = vec4(0.0);\n\n o_0.color_0 = _S42;\n o_0.colorLine_0 = vec2(0.0);\n o_0.cutYsLo_0 = _S42;\n o_0.cutYsHi_0 = _S42;\n o_0.colorAlongY_0 = 0.0;\n o_0.yPx_1 = 0.0;\n VsOut_0 _S43 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S43.color_0;\n\n v_colorLine = _S43.colorLine_0;\n\n v_cutYsLo = _S43.cutYsLo_0;\n\n v_cutYsHi = _S43.cutYsHi_0;\n\n v_yPx = _S43.yPx_1;\n\n v_colorAlongY = _S43.colorAlongY_0;\n\n return;\n }\n\n float _S44 = lineBpToClipX_0(a_x);\n\n float _S45 = lineBpToClipX_0(a_x2);\n\n\n\n float bandTop_1 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S41.slot_1);\n\n float _S46 = lineValueYPx_0(a_y, bandTop_1);\n\n float prevPx_0 = neighbourYPx_0(a_prevY, bandTop_1);\n float nextPx_0 = neighbourYPx_0(a_nextY, bandTop_1);\n float hw_0 = u_0.lineWidth_0 * 0.5;\n float hwx_0 = pxToClipLen_0(hw_0, u_0.viewportWidth_0);\n\n uint seg_0 = uint(gl_VertexID) / 6U;\n vec2 q_0 = quadLocal_0(uint(gl_VertexID));\n\n float sx_0;\n\n float sy_0;\n\n vec2 colorLine_1;\n\n\n\n if(seg_0 == 0U)\n {\n float _S47 = max(prevPx_0, _S46);\n\n float _S48 = min(prevPx_0, _S46);\n\n float _S49 = mix(_S47 + hw_0, _S48 - hw_0, q_0.y);\n vec2 _S50 = vec2(_S48, _S47);\n\n sx_0 = mix(_S44 - hwx_0, _S44 + hwx_0, q_0.x);\n\n sy_0 = _S49;\n\n colorLine_1 = _S50;\n\n }\n else\n {\n\n if(seg_0 == 1U)\n {\n float _S51 = mix(_S46 + hw_0, _S46 - hw_0, q_0.y);\n\n float _S52 = lineColorYPx_0(a_y, bandTop_1);\n\n vec2 _S53 = vec2(_S52, _S52);\n\n sx_0 = mix(min(_S44, _S45) - hwx_0, max(_S44, _S45) + hwx_0, q_0.x);\n\n sy_0 = _S51;\n\n colorLine_1 = _S53;\n\n }\n else\n {\n\n float _S54 = max(_S46, nextPx_0);\n\n float _S55 = min(_S46, nextPx_0);\n\n float _S56 = mix(_S54 + hw_0, _S55 - hw_0, q_0.y);\n vec2 _S57 = vec2(_S55, _S54);\n\n sx_0 = mix(_S45 - hwx_0, _S45 + hwx_0, q_0.x);\n\n sy_0 = _S56;\n\n colorLine_1 = _S57;\n\n }\n\n }\n\n o_0.position_0 = vec4(sx_0, yPxToClipY_0(sy_0, u_0.canvasHeight_0), 0.0, 1.0);\n o_0.color_0 = _S41.color_1;\n o_0.colorLine_0 = colorLine_1;\n o_0.cutYsLo_0 = lineCutYsPx_0(0, bandTop_1);\n o_0.cutYsHi_0 = lineCutYsPx_0(4, bandTop_1);\n\n if(lineColorAlongY_0(u_0.rampMode_0, u_0.colorFromY_0, _S41.overridden_1))\n {\n\n sx_0 = 1.0;\n\n }\n else\n {\n\n sx_0 = 0.0;\n\n }\n\n o_0.colorAlongY_0 = sx_0;\n\n o_0.yPx_1 = sy_0;\n VsOut_0 _S58 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S58.color_0;\n\n v_colorLine = _S58.colorLine_0;\n\n v_cutYsLo = _S58.cutYsLo_0;\n\n v_cutYsHi = _S58.cutYsHi_0;\n\n v_yPx = _S58.yPx_1;\n\n v_colorAlongY = _S58.colorAlongY_0;\n\n return;\n}\n\n";
|
|
2
|
+
export declare const GLSL_FRAGMENT = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n int colorFromY_0;\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nfloat colorCutAt_0(int i_0, vec4 cutsLo_0, vec4 cutsHi_0)\n{\n\n float _S1;\n if(i_0 < 4)\n {\n\n _S1 = cutsLo_0[i_0];\n\n }\n else\n {\n\n _S1 = cutsHi_0[i_0 - 4];\n\n }\n\n return _S1;\n}\n\n\nint thresholdBandAtYPx_0(float yPx_0, int cutCount_0, vec4 cutYsLo_0, vec4 cutYsHi_0)\n{\n\n int band_0 = 0;\n\n int i_1 = 0;\n\n for(;;)\n {\n\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n\n break;\n }\n\n if(yPx_0 <= (colorCutAt_0(i_1, cutYsLo_0, cutYsHi_0)))\n {\n\n band_0 = i_1 + 1;\n\n }\n\n i_1 = i_1 + 1;\n\n }\n\n return band_0;\n}\n\n\nlayout(location = 0)\nout vec4 entryPointParam_fs_main_0;\n\n\nflat in vec4 v_color;\n\n\nflat in vec2 v_colorLine;\n\n\nflat in vec4 v_cutYsLo;\n\n\nflat in vec4 v_cutYsHi;\n\n\nin float v_yPx;\n\n\nflat in float v_colorAlongY;\n\n\nvec4 lineFragmentColor_0(float _S2, vec4 _S3, vec4 _S4, vec4 _S5, float _S6)\n{\n\n if(_S6 < 0.5)\n {\n\n return _S5;\n }\n return u_0.colorBands_0[thresholdBandAtYPx_0(_S2, u_0.colorCutCount_0, _S3, _S4)];\n}\n\n\nvoid main()\n{\n\n entryPointParam_fs_main_0 = lineFragmentColor_0(clamp(v_yPx, v_colorLine.x, v_colorLine.y), v_cutYsLo, v_cutYsHi, v_color, v_colorAlongY);\n\n return;\n}\n\n";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from lineStepMark.slang.
|
|
2
2
|
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
-
export const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nuniform sampler2D u_colorRamp;\n\n\nuniform sampler2D u_rowTable;\n\n\nvec4 unpackRGBA_0(uint c_0)\n{\n\n return vec4(float((c_0 >> 0U) & 255U), float((c_0 >> 8U) & 255U), float((c_0 >> 16U) & 255U), float((c_0 >> 24U) & 255U)) / 255.0;\n}\n\n\nfloat rampMidT_0(float t_0, float mid_0)\n{\n\n float _S1 = max(mid_0, 1.0 - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0 * _S1), 0.0, 1.0);\n}\n\n\nfloat colorCutAt_0(int i_0, vec4 cutsLo_0, vec4 cutsHi_0)\n{\n\n float _S2;\n if(i_0 < 4)\n {\n\n _S2 = cutsLo_0[i_0];\n\n }\n else\n {\n\n _S2 = cutsHi_0[i_0 - 4];\n\n }\n\n return _S2;\n}\n\n\nint thresholdBand_0(float value_0, int cutCount_0, vec4 cutsLo_1, vec4 cutsHi_1)\n{\n\n int band_0 = 0;\n\n int i_1 = 0;\n\n for(;;)\n {\n\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n\n break;\n }\n\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n\n band_0 = i_1 + 1;\n\n }\n\n i_1 = i_1 + 1;\n\n }\n\n return band_0;\n}\n\n\nfloat log1pf_0(float x_0)\n{\n\n float u_1 = 1.0 + x_0;\n\n float _S3;\n if(u_1 == 1.0)\n {\n\n _S3 = x_0;\n\n }\n else\n {\n\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0));\n\n }\n\n return _S3;\n}\n\nfloat symlogTransform_0(float x_1, float c_1)\n{\n\n return float((int(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\n\nfloat normalizeScoreUnclamped_0(float score_0, float domainMin_1, float domainMax_1, int scaleType_0, float symlogConstant_0)\n{\n\n float tMax_0;\n\n float tMin_0;\n\n float t_1;\n\n\n\n if(scaleType_0 == 2)\n {\n\n float _S4 = symlogTransform_0(score_0, symlogConstant_0);\n float _S5 = symlogTransform_0(domainMin_1, symlogConstant_0);\n\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n\n tMin_0 = _S5;\n\n t_1 = _S4;\n\n }\n else\n {\n\n if(scaleType_0 == 1)\n {\n if(domainMin_1 > 0.0)\n {\n\n tMax_0 = domainMin_1;\n\n }\n else\n {\n\n tMax_0 = 1.0;\n\n }\n float _S6 = log2(max(score_0, tMax_0));\n float _S7 = log2(tMax_0);\n\n tMax_0 = log2(max(domainMax_1, tMax_0));\n\n tMin_0 = _S7;\n\n t_1 = _S6;\n\n }\n else\n {\n\n tMax_0 = domainMax_1;\n\n tMin_0 = domainMin_1;\n\n t_1 = score_0;\n\n }\n\n }\n\n float tRange_0 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0)\n {\n\n if(t_1 > tMin_0)\n {\n\n tMax_0 = 1.0;\n\n }\n else\n {\n\n tMax_0 = 0.0;\n\n }\n\n return tMax_0;\n }\n return (t_1 - tMin_0) / tRange_0;\n}\n\nfloat normalizeScore_0(float score_1, float domainMin_2, float domainMax_2, int scaleType_1, float symlogConstant_1)\n{\n\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0, 1.0);\n}\n\n\nuint rowTableWidth_0(uint keys_0)\n{\n\n return max(min(keys_0, 2048U), 1U);\n}\n\nuint rowTablePlaneHeight_0(uint keys_1)\n{\n\n uint w_0 = rowTableWidth_0(keys_1);\n uint _S8 = (keys_1 + w_0 - 1U) / w_0;\n\n return max(_S8, 1U);\n}\n\nuint rowTableTexelX_0(uint key_0, uint keys_2)\n{\n\n uint _S9 = key_0 % rowTableWidth_0(keys_2);\n\n return _S9;\n}\n\n\nuint rowTableTexelY_0(uint key_1, uint keys_3)\n{\n\n uint _S10 = key_1 / rowTableWidth_0(keys_3);\n\n return _S10;\n}\n\n\nuint byteOf_0(float channel_0)\n{\n\n return uint(channel_0 * 255.0 + 0.5);\n}\n\n\nvec2 hpSplitUint_0(uint value_1)\n{\n\n uint lo_0 = value_1 & 4095U;\n\n return vec2(float(value_1 - lo_0), float(lo_0));\n}\n\n\nfloat hpToClipX_0(vec2 splitPos_0, vec3 bpRange_0, float hpZero_0)\n{\n\n float floorBp_0 = -3.00000000549775576e+38 + hpZero_0;\n float step_0 = 2.0 / bpRange_0.z;\n\n\n return dot(vec3(-1.0, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3(1.0, step_0, step_0));\n}\n\n\nfloat rowBandTopPx_0(float rowOffsetPx_1, float rowHeight_1, uint slot_0)\n{\n\n return rowOffsetPx_1 + rowHeight_1 * float(slot_0);\n}\n\n\nfloat valueToYPxScaled_0(float value_2, float domainMin_3, float domainMax_3, float h_0, int scaleType_2, float symlogConstant_2)\n{\n\n return (1.0 - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_0;\n}\n\n\nfloat lineValueYPx_0(float _S11, float _S12)\n{\n\n return _S12 + valueToYPxScaled_0(_S11, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\n\nfloat neighbourYPx_0(float neighbour_0, float bandTop_0)\n{\n\n float _S13;\n if(neighbour_0 < -1.50000000274887788e+38)\n {\n\n _S13 = u_0.origin_0;\n\n }\n else\n {\n\n _S13 = neighbour_0;\n\n }\n\n return lineValueYPx_0(_S13, bandTop_0);\n}\n\n\nfloat pxToClipLen_0(float px_0, float size_0)\n{\n\n return px_0 * 2.0 / size_0;\n}\n\n\nvec2 quadLocal_0(uint vid_0)\n{\n\n uint v_0 = vid_0 % 6U;\n\n bool _S14 = v_0 == 0U;\n\n bool _S15;\n\n if(_S14)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 2U;\n\n }\n\n if(_S15)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 3U;\n\n }\n\n float _S16;\n\n if(_S15)\n {\n\n _S16 = 0.0;\n\n }\n else\n {\n\n _S16 = 1.0;\n\n }\n if(_S14)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 1U;\n\n }\n\n if(_S15)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 4U;\n\n }\n\n float _S17;\n\n if(_S15)\n {\n\n _S17 = 0.0;\n\n }\n else\n {\n\n _S17 = 1.0;\n\n }\n\n return vec2(_S16, _S17);\n}\n\n\nfloat yPxToClipY_0(float yPx_0, float canvasHeight_1)\n{\n\n return 1.0 - yPx_0 / canvasHeight_1 * 2.0;\n}\n\n\nflat out vec4 v_color;\n\n\nflat out vec2 v_colorLine;\n\n\nflat out vec4 v_cutYsLo;\n\n\nflat out vec4 v_cutYsHi;\n\n\nout float v_yPx;\n\n\nlayout(location = 0)\nin uint a_x;\n\n\nlayout(location = 1)\nin uint a_x2;\n\n\nlayout(location = 2)\nin float a_y;\n\n\nlayout(location = 3)\nin uint a_color;\n\n\nlayout(location = 4)\nin uint a_row;\n\n\nlayout(location = 5)\nin float a_prevY;\n\n\nlayout(location = 6)\nin float a_nextY;\n\n\nstruct VsOut_0\n{\n vec4 position_0;\n vec4 color_0;\n vec2 colorLine_0;\n vec4 cutYsLo_0;\n vec4 cutYsHi_0;\n float yPx_1;\n};\n\n\nvec4 rampColor_0(float _S18)\n{\n\n return (textureLod((u_colorRamp), (vec2((clamp(_S18, 0.0, 1.0) * 255.0 + 0.5) / 256.0, 0.5)), (0.0)));\n}\n\n\nvec4 markScaleColor_0(uint _S19, int _S20, float _S21, float _S22, float _S23, int _S24, vec4 _S25, vec4 _S26)\n{\n\n if(_S20 == 0)\n {\n\n return unpackRGBA_0(_S19);\n }\n if(_S19 == 2143289345U)\n {\n\n return unpackRGBA_0(4289703855U);\n }\n\n int scaleType_3;\n\n if((_S19 & 2139095040U) == 2139095040U)\n {\n\n if((_S19 & 8388607U) != 0U)\n {\n\n return unpackRGBA_0(4286611584U);\n }\n\n bool negative_0 = (_S19 & 2147483648U) != 0U;\n if(_S20 == 3)\n {\n\n if(negative_0)\n {\n\n scaleType_3 = 0;\n\n }\n else\n {\n\n scaleType_3 = _S24;\n\n }\n\n return u_0.colorBands_0[scaleType_3];\n }\n\n float _S27;\n\n if(negative_0)\n {\n\n _S27 = 0.0;\n\n }\n else\n {\n\n _S27 = 1.0;\n\n }\n\n return rampColor_0(rampMidT_0(_S27, _S23));\n }\n float value_3 = uintBitsToFloat(_S19);\n if(_S20 == 3)\n {\n\n return u_0.colorBands_0[thresholdBand_0(value_3, _S24, _S25, _S26)];\n }\n if(_S20 == 2)\n {\n\n scaleType_3 = 1;\n\n }\n else\n {\n\n scaleType_3 = 0;\n\n }\n return rampColor_0(rampMidT_0(normalizeScore_0(value_3, _S21, _S22, scaleType_3, 1.0), _S23));\n}\n\n\nstruct RowPlacement_0\n{\n bool hidden_0;\n uint slot_1;\n vec4 color_1;\n};\n\n\nRowPlacement_0 rowTableLookup_0(uint _S28, int _S29, vec4 _S30)\n{\n\n RowPlacement_0 p_0;\n p_0.hidden_0 = false;\n p_0.slot_1 = _S28;\n p_0.color_1 = _S30;\n if(_S29 < 0)\n {\n\n return p_0;\n }\n uint n_0 = uint(_S29);\n if(_S28 >= n_0)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n uint h_1 = rowTablePlaneHeight_0(n_0);\n uint _S31 = rowTableTexelX_0(_S28, n_0);\n\n float u_2 = (float(_S31) + 0.5) / float(rowTableWidth_0(n_0));\n float rows_0 = float(2U * h_1);\n uint y_0 = rowTableTexelY_0(_S28, n_0);\n vec4 s_0 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0) + 0.5) / rows_0)), (0.0)));\n if((s_0.w) < 0.5)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_1 = ((byteOf_0(s_0.x)) | ((byteOf_0(s_0.y)) << 8)) | ((byteOf_0(s_0.z)) << 16);\n vec4 c_2 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0 + h_1) + 0.5) / rows_0)), (0.0)));\n\n vec4 _S32;\n if((c_2.w) > 0.0)\n {\n\n _S32 = c_2;\n\n }\n else\n {\n\n _S32 = _S30;\n\n }\n\n p_0.color_1 = _S32;\n return p_0;\n}\n\n\nfloat lineBpToClipX_0(uint _S33)\n{\n\n return hpToClipX_0(hpSplitUint_0(_S33), u_0.bpRangeX_0, u_0.zero_0);\n}\n\n\nfloat lineColorYPx_0(float _S34, float _S35)\n{\n\n return _S35 + (1.0 - normalizeScoreUnclamped_0(_S34, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\n\nvec4 lineCutYsPx_0(int _S36, float _S37)\n{\n\n vec4 ys_0 = vec4(0.0);\n\n int k_0 = 0;\n for(;;)\n {\n\n if(k_0 < 4)\n {\n }\n else\n {\n\n break;\n }\n\n int _S38 = _S36 + k_0;\n\n if(_S38 < (u_0.colorCutCount_0))\n {\n\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S38, u_0.colorCuts_0[0], u_0.colorCuts_0[1]), _S37);\n\n }\n\n k_0 = k_0 + 1;\n\n }\n\n return ys_0;\n}\n\n\nvoid main()\n{\n\n VsOut_0 o_0;\n\n RowPlacement_0 _S39 = rowTableLookup_0(a_row, u_0.rowTableKeys_0, markScaleColor_0(a_color, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[0], u_0.colorCuts_0[1]));\n\n\n if(_S39.hidden_0)\n {\n\n o_0.position_0 = vec4(2.0, 2.0, 0.0, 1.0);\n const vec4 _S40 = vec4(0.0);\n\n o_0.color_0 = _S40;\n o_0.colorLine_0 = vec2(0.0);\n o_0.cutYsLo_0 = _S40;\n o_0.cutYsHi_0 = _S40;\n o_0.yPx_1 = 0.0;\n VsOut_0 _S41 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S41.color_0;\n\n v_colorLine = _S41.colorLine_0;\n\n v_cutYsLo = _S41.cutYsLo_0;\n\n v_cutYsHi = _S41.cutYsHi_0;\n\n v_yPx = _S41.yPx_1;\n\n return;\n }\n\n float _S42 = lineBpToClipX_0(a_x);\n\n float _S43 = lineBpToClipX_0(a_x2);\n\n\n\n float bandTop_1 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S39.slot_1);\n\n float _S44 = lineValueYPx_0(a_y, bandTop_1);\n\n float prevPx_0 = neighbourYPx_0(a_prevY, bandTop_1);\n float nextPx_0 = neighbourYPx_0(a_nextY, bandTop_1);\n float hw_0 = u_0.lineWidth_0 * 0.5;\n float hwx_0 = pxToClipLen_0(hw_0, u_0.viewportWidth_0);\n\n uint seg_0 = uint(gl_VertexID) / 6U;\n vec2 q_0 = quadLocal_0(uint(gl_VertexID));\n\n float sx_0;\n\n float sy_0;\n\n vec2 colorLine_1;\n\n\n\n if(seg_0 == 0U)\n {\n float _S45 = max(prevPx_0, _S44);\n\n float _S46 = min(prevPx_0, _S44);\n\n float _S47 = mix(_S45 + hw_0, _S46 - hw_0, q_0.y);\n vec2 _S48 = vec2(_S46, _S45);\n\n sx_0 = mix(_S42 - hwx_0, _S42 + hwx_0, q_0.x);\n\n sy_0 = _S47;\n\n colorLine_1 = _S48;\n\n }\n else\n {\n\n if(seg_0 == 1U)\n {\n float _S49 = mix(_S44 + hw_0, _S44 - hw_0, q_0.y);\n\n float _S50 = lineColorYPx_0(a_y, bandTop_1);\n\n vec2 _S51 = vec2(_S50, _S50);\n\n sx_0 = mix(min(_S42, _S43) - hwx_0, max(_S42, _S43) + hwx_0, q_0.x);\n\n sy_0 = _S49;\n\n colorLine_1 = _S51;\n\n }\n else\n {\n\n float _S52 = max(_S44, nextPx_0);\n\n float _S53 = min(_S44, nextPx_0);\n\n float _S54 = mix(_S52 + hw_0, _S53 - hw_0, q_0.y);\n vec2 _S55 = vec2(_S53, _S52);\n\n sx_0 = mix(_S43 - hwx_0, _S43 + hwx_0, q_0.x);\n\n sy_0 = _S54;\n\n colorLine_1 = _S55;\n\n }\n\n }\n\n o_0.position_0 = vec4(sx_0, yPxToClipY_0(sy_0, u_0.canvasHeight_0), 0.0, 1.0);\n o_0.color_0 = _S39.color_1;\n o_0.colorLine_0 = colorLine_1;\n o_0.cutYsLo_0 = lineCutYsPx_0(0, bandTop_1);\n o_0.cutYsHi_0 = lineCutYsPx_0(4, bandTop_1);\n o_0.yPx_1 = sy_0;\n VsOut_0 _S56 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S56.color_0;\n\n v_colorLine = _S56.colorLine_0;\n\n v_cutYsLo = _S56.cutYsLo_0;\n\n v_cutYsHi = _S56.cutYsHi_0;\n\n v_yPx = _S56.yPx_1;\n\n return;\n}\n\n";
|
|
4
|
-
export const GLSL_FRAGMENT = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nfloat colorCutAt_0(int i_0, vec4 cutsLo_0, vec4 cutsHi_0)\n{\n\n float _S1;\n if(i_0 < 4)\n {\n\n _S1 = cutsLo_0[i_0];\n\n }\n else\n {\n\n _S1 = cutsHi_0[i_0 - 4];\n\n }\n\n return _S1;\n}\n\n\nint thresholdBandAtYPx_0(float yPx_0, int cutCount_0, vec4 cutYsLo_0, vec4 cutYsHi_0)\n{\n\n int band_0 = 0;\n\n int i_1 = 0;\n\n for(;;)\n {\n\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n\n break;\n }\n\n if(yPx_0 <= (colorCutAt_0(i_1, cutYsLo_0, cutYsHi_0)))\n {\n\n band_0 = i_1 + 1;\n\n }\n\n i_1 = i_1 + 1;\n\n }\n\n return band_0;\n}\n\n\nlayout(location = 0)\nout vec4 entryPointParam_fs_main_0;\n\n\nflat in vec4 v_color;\n\n\nflat in vec2 v_colorLine;\n\n\nflat in vec4 v_cutYsLo;\n\n\nflat in vec4 v_cutYsHi;\n\n\nin float v_yPx;\n\n\nvec4 lineFragmentColor_0(float _S2, vec4 _S3, vec4 _S4, vec4 _S5)\n{\n\n if(
|
|
3
|
+
export const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n int colorFromY_0;\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nuniform sampler2D u_colorRamp;\n\n\nuniform sampler2D u_rowTable;\n\n\nvec4 unpackRGBA_0(uint c_0)\n{\n\n return vec4(float((c_0 >> 0U) & 255U), float((c_0 >> 8U) & 255U), float((c_0 >> 16U) & 255U), float((c_0 >> 24U) & 255U)) / 255.0;\n}\n\n\nfloat rampMidT_0(float t_0, float mid_0)\n{\n\n float _S1 = max(mid_0, 1.0 - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0 * _S1), 0.0, 1.0);\n}\n\n\nfloat colorCutAt_0(int i_0, vec4 cutsLo_0, vec4 cutsHi_0)\n{\n\n float _S2;\n if(i_0 < 4)\n {\n\n _S2 = cutsLo_0[i_0];\n\n }\n else\n {\n\n _S2 = cutsHi_0[i_0 - 4];\n\n }\n\n return _S2;\n}\n\n\nint thresholdBand_0(float value_0, int cutCount_0, vec4 cutsLo_1, vec4 cutsHi_1)\n{\n\n int band_0 = 0;\n\n int i_1 = 0;\n\n for(;;)\n {\n\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n\n break;\n }\n\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n\n band_0 = i_1 + 1;\n\n }\n\n i_1 = i_1 + 1;\n\n }\n\n return band_0;\n}\n\n\nfloat log1pf_0(float x_0)\n{\n\n float u_1 = 1.0 + x_0;\n\n float _S3;\n if(u_1 == 1.0)\n {\n\n _S3 = x_0;\n\n }\n else\n {\n\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0));\n\n }\n\n return _S3;\n}\n\nfloat symlogTransform_0(float x_1, float c_1)\n{\n\n return float((int(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\n\nfloat normalizeScoreUnclamped_0(float score_0, float domainMin_1, float domainMax_1, int scaleType_0, float symlogConstant_0)\n{\n\n float tMax_0;\n\n float tMin_0;\n\n float t_1;\n\n\n\n if(scaleType_0 == 2)\n {\n\n float _S4 = symlogTransform_0(score_0, symlogConstant_0);\n float _S5 = symlogTransform_0(domainMin_1, symlogConstant_0);\n\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n\n tMin_0 = _S5;\n\n t_1 = _S4;\n\n }\n else\n {\n\n if(scaleType_0 == 1)\n {\n if(domainMin_1 > 0.0)\n {\n\n tMax_0 = domainMin_1;\n\n }\n else\n {\n\n tMax_0 = 1.0;\n\n }\n float _S6 = log2(max(score_0, tMax_0));\n float _S7 = log2(tMax_0);\n\n tMax_0 = log2(max(domainMax_1, tMax_0));\n\n tMin_0 = _S7;\n\n t_1 = _S6;\n\n }\n else\n {\n\n tMax_0 = domainMax_1;\n\n tMin_0 = domainMin_1;\n\n t_1 = score_0;\n\n }\n\n }\n\n float tRange_0 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0)\n {\n\n if(t_1 > tMin_0)\n {\n\n tMax_0 = 1.0;\n\n }\n else\n {\n\n tMax_0 = 0.0;\n\n }\n\n return tMax_0;\n }\n return (t_1 - tMin_0) / tRange_0;\n}\n\nfloat normalizeScore_0(float score_1, float domainMin_2, float domainMax_2, int scaleType_1, float symlogConstant_1)\n{\n\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0, 1.0);\n}\n\n\nuint rowTableWidth_0(uint keys_0)\n{\n\n return max(min(keys_0, 2048U), 1U);\n}\n\nuint rowTablePlaneHeight_0(uint keys_1)\n{\n\n uint w_0 = rowTableWidth_0(keys_1);\n uint _S8 = (keys_1 + w_0 - 1U) / w_0;\n\n return max(_S8, 1U);\n}\n\nuint rowTableTexelX_0(uint key_0, uint keys_2)\n{\n\n uint _S9 = key_0 % rowTableWidth_0(keys_2);\n\n return _S9;\n}\n\n\nuint rowTableTexelY_0(uint key_1, uint keys_3)\n{\n\n uint _S10 = key_1 / rowTableWidth_0(keys_3);\n\n return _S10;\n}\n\n\nuint byteOf_0(float channel_0)\n{\n\n return uint(channel_0 * 255.0 + 0.5);\n}\n\n\nvec2 hpSplitUint_0(uint value_1)\n{\n\n uint lo_0 = value_1 & 4095U;\n\n return vec2(float(value_1 - lo_0), float(lo_0));\n}\n\n\nfloat hpToClipX_0(vec2 splitPos_0, vec3 bpRange_0, float hpZero_0)\n{\n\n float floorBp_0 = -3.00000000549775576e+38 + hpZero_0;\n float step_0 = 2.0 / bpRange_0.z;\n\n\n return dot(vec3(-1.0, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3(1.0, step_0, step_0));\n}\n\n\nfloat rowBandTopPx_0(float rowOffsetPx_1, float rowHeight_1, uint slot_0)\n{\n\n return rowOffsetPx_1 + rowHeight_1 * float(slot_0);\n}\n\n\nfloat valueToYPxScaled_0(float value_2, float domainMin_3, float domainMax_3, float h_0, int scaleType_2, float symlogConstant_2)\n{\n\n return (1.0 - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_0;\n}\n\n\nfloat lineValueYPx_0(float _S11, float _S12)\n{\n\n return _S12 + valueToYPxScaled_0(_S11, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\n\nfloat neighbourYPx_0(float neighbour_0, float bandTop_0)\n{\n\n float _S13;\n if(neighbour_0 < -1.50000000274887788e+38)\n {\n\n _S13 = u_0.origin_0;\n\n }\n else\n {\n\n _S13 = neighbour_0;\n\n }\n\n return lineValueYPx_0(_S13, bandTop_0);\n}\n\n\nfloat pxToClipLen_0(float px_0, float size_0)\n{\n\n return px_0 * 2.0 / size_0;\n}\n\n\nvec2 quadLocal_0(uint vid_0)\n{\n\n uint v_0 = vid_0 % 6U;\n\n bool _S14 = v_0 == 0U;\n\n bool _S15;\n\n if(_S14)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 2U;\n\n }\n\n if(_S15)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 3U;\n\n }\n\n float _S16;\n\n if(_S15)\n {\n\n _S16 = 0.0;\n\n }\n else\n {\n\n _S16 = 1.0;\n\n }\n if(_S14)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 1U;\n\n }\n\n if(_S15)\n {\n\n _S15 = true;\n\n }\n else\n {\n\n _S15 = v_0 == 4U;\n\n }\n\n float _S17;\n\n if(_S15)\n {\n\n _S17 = 0.0;\n\n }\n else\n {\n\n _S17 = 1.0;\n\n }\n\n return vec2(_S16, _S17);\n}\n\n\nfloat yPxToClipY_0(float yPx_0, float canvasHeight_1)\n{\n\n return 1.0 - yPx_0 / canvasHeight_1 * 2.0;\n}\n\n\nbool lineColorAlongY_0(int rampMode_1, int colorFromY_1, bool overridden_0)\n{\n\n bool _S18;\n if(rampMode_1 == 3)\n {\n\n _S18 = colorFromY_1 != 0;\n\n }\n else\n {\n\n _S18 = false;\n\n }\n\n if(_S18)\n {\n\n _S18 = !overridden_0;\n\n }\n else\n {\n\n _S18 = false;\n\n }\n\n return _S18;\n}\n\n\nflat out vec4 v_color;\n\n\nflat out vec2 v_colorLine;\n\n\nflat out vec4 v_cutYsLo;\n\n\nflat out vec4 v_cutYsHi;\n\n\nout float v_yPx;\n\n\nflat out float v_colorAlongY;\n\n\nlayout(location = 0)\nin uint a_x;\n\n\nlayout(location = 1)\nin uint a_x2;\n\n\nlayout(location = 2)\nin float a_y;\n\n\nlayout(location = 3)\nin uint a_color;\n\n\nlayout(location = 4)\nin uint a_row;\n\n\nlayout(location = 5)\nin float a_prevY;\n\n\nlayout(location = 6)\nin float a_nextY;\n\n\nstruct VsOut_0\n{\n vec4 position_0;\n vec4 color_0;\n vec2 colorLine_0;\n vec4 cutYsLo_0;\n vec4 cutYsHi_0;\n float yPx_1;\n float colorAlongY_0;\n};\n\n\nvec4 rampColor_0(float _S19)\n{\n\n return (textureLod((u_colorRamp), (vec2((clamp(_S19, 0.0, 1.0) * 255.0 + 0.5) / 256.0, 0.5)), (0.0)));\n}\n\n\nvec4 markScaleColor_0(uint _S20, int _S21, float _S22, float _S23, float _S24, int _S25, vec4 _S26, vec4 _S27)\n{\n\n if(_S21 == 0)\n {\n\n return unpackRGBA_0(_S20);\n }\n if(_S20 == 2143289345U)\n {\n\n return unpackRGBA_0(4289703855U);\n }\n\n int scaleType_3;\n\n if((_S20 & 2139095040U) == 2139095040U)\n {\n\n if((_S20 & 8388607U) != 0U)\n {\n\n return unpackRGBA_0(4286611584U);\n }\n\n bool negative_0 = (_S20 & 2147483648U) != 0U;\n if(_S21 == 3)\n {\n\n if(negative_0)\n {\n\n scaleType_3 = 0;\n\n }\n else\n {\n\n scaleType_3 = _S25;\n\n }\n\n return u_0.colorBands_0[scaleType_3];\n }\n\n float _S28;\n\n if(negative_0)\n {\n\n _S28 = 0.0;\n\n }\n else\n {\n\n _S28 = 1.0;\n\n }\n\n return rampColor_0(rampMidT_0(_S28, _S24));\n }\n float value_3 = uintBitsToFloat(_S20);\n if(_S21 == 3)\n {\n\n return u_0.colorBands_0[thresholdBand_0(value_3, _S25, _S26, _S27)];\n }\n if(_S21 == 2)\n {\n\n scaleType_3 = 1;\n\n }\n else\n {\n\n scaleType_3 = 0;\n\n }\n return rampColor_0(rampMidT_0(normalizeScore_0(value_3, _S22, _S23, scaleType_3, 1.0), _S24));\n}\n\n\nstruct RowPlacement_0\n{\n bool hidden_0;\n uint slot_1;\n vec4 color_1;\n bool overridden_1;\n};\n\n\nRowPlacement_0 rowTableLookup_0(uint _S29, int _S30, vec4 _S31)\n{\n\n RowPlacement_0 p_0;\n p_0.hidden_0 = false;\n p_0.slot_1 = _S29;\n p_0.color_1 = _S31;\n p_0.overridden_1 = false;\n if(_S30 < 0)\n {\n\n return p_0;\n }\n uint n_0 = uint(_S30);\n if(_S29 >= n_0)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n uint h_1 = rowTablePlaneHeight_0(n_0);\n uint _S32 = rowTableTexelX_0(_S29, n_0);\n\n float u_2 = (float(_S32) + 0.5) / float(rowTableWidth_0(n_0));\n float rows_0 = float(2U * h_1);\n uint y_0 = rowTableTexelY_0(_S29, n_0);\n vec4 s_0 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0) + 0.5) / rows_0)), (0.0)));\n if((s_0.w) < 0.5)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_1 = ((byteOf_0(s_0.x)) | ((byteOf_0(s_0.y)) << 8)) | ((byteOf_0(s_0.z)) << 16);\n vec4 c_2 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0 + h_1) + 0.5) / rows_0)), (0.0)));\n bool _S33 = (c_2.w) > 0.0;\n\n p_0.overridden_1 = _S33;\n\n vec4 _S34;\n if(_S33)\n {\n\n _S34 = c_2;\n\n }\n else\n {\n\n _S34 = _S31;\n\n }\n\n p_0.color_1 = _S34;\n return p_0;\n}\n\n\nfloat lineBpToClipX_0(uint _S35)\n{\n\n return hpToClipX_0(hpSplitUint_0(_S35), u_0.bpRangeX_0, u_0.zero_0);\n}\n\n\nfloat lineColorYPx_0(float _S36, float _S37)\n{\n\n return _S37 + (1.0 - normalizeScoreUnclamped_0(_S36, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\n\nvec4 lineCutYsPx_0(int _S38, float _S39)\n{\n\n vec4 ys_0 = vec4(0.0);\n\n int k_0 = 0;\n for(;;)\n {\n\n if(k_0 < 4)\n {\n }\n else\n {\n\n break;\n }\n\n int _S40 = _S38 + k_0;\n\n if(_S40 < (u_0.colorCutCount_0))\n {\n\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S40, u_0.colorCuts_0[0], u_0.colorCuts_0[1]), _S39);\n\n }\n\n k_0 = k_0 + 1;\n\n }\n\n return ys_0;\n}\n\n\nvoid main()\n{\n\n VsOut_0 o_0;\n\n RowPlacement_0 _S41 = rowTableLookup_0(a_row, u_0.rowTableKeys_0, markScaleColor_0(a_color, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[0], u_0.colorCuts_0[1]));\n\n\n if(_S41.hidden_0)\n {\n\n o_0.position_0 = vec4(2.0, 2.0, 0.0, 1.0);\n const vec4 _S42 = vec4(0.0);\n\n o_0.color_0 = _S42;\n o_0.colorLine_0 = vec2(0.0);\n o_0.cutYsLo_0 = _S42;\n o_0.cutYsHi_0 = _S42;\n o_0.colorAlongY_0 = 0.0;\n o_0.yPx_1 = 0.0;\n VsOut_0 _S43 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S43.color_0;\n\n v_colorLine = _S43.colorLine_0;\n\n v_cutYsLo = _S43.cutYsLo_0;\n\n v_cutYsHi = _S43.cutYsHi_0;\n\n v_yPx = _S43.yPx_1;\n\n v_colorAlongY = _S43.colorAlongY_0;\n\n return;\n }\n\n float _S44 = lineBpToClipX_0(a_x);\n\n float _S45 = lineBpToClipX_0(a_x2);\n\n\n\n float bandTop_1 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S41.slot_1);\n\n float _S46 = lineValueYPx_0(a_y, bandTop_1);\n\n float prevPx_0 = neighbourYPx_0(a_prevY, bandTop_1);\n float nextPx_0 = neighbourYPx_0(a_nextY, bandTop_1);\n float hw_0 = u_0.lineWidth_0 * 0.5;\n float hwx_0 = pxToClipLen_0(hw_0, u_0.viewportWidth_0);\n\n uint seg_0 = uint(gl_VertexID) / 6U;\n vec2 q_0 = quadLocal_0(uint(gl_VertexID));\n\n float sx_0;\n\n float sy_0;\n\n vec2 colorLine_1;\n\n\n\n if(seg_0 == 0U)\n {\n float _S47 = max(prevPx_0, _S46);\n\n float _S48 = min(prevPx_0, _S46);\n\n float _S49 = mix(_S47 + hw_0, _S48 - hw_0, q_0.y);\n vec2 _S50 = vec2(_S48, _S47);\n\n sx_0 = mix(_S44 - hwx_0, _S44 + hwx_0, q_0.x);\n\n sy_0 = _S49;\n\n colorLine_1 = _S50;\n\n }\n else\n {\n\n if(seg_0 == 1U)\n {\n float _S51 = mix(_S46 + hw_0, _S46 - hw_0, q_0.y);\n\n float _S52 = lineColorYPx_0(a_y, bandTop_1);\n\n vec2 _S53 = vec2(_S52, _S52);\n\n sx_0 = mix(min(_S44, _S45) - hwx_0, max(_S44, _S45) + hwx_0, q_0.x);\n\n sy_0 = _S51;\n\n colorLine_1 = _S53;\n\n }\n else\n {\n\n float _S54 = max(_S46, nextPx_0);\n\n float _S55 = min(_S46, nextPx_0);\n\n float _S56 = mix(_S54 + hw_0, _S55 - hw_0, q_0.y);\n vec2 _S57 = vec2(_S55, _S54);\n\n sx_0 = mix(_S45 - hwx_0, _S45 + hwx_0, q_0.x);\n\n sy_0 = _S56;\n\n colorLine_1 = _S57;\n\n }\n\n }\n\n o_0.position_0 = vec4(sx_0, yPxToClipY_0(sy_0, u_0.canvasHeight_0), 0.0, 1.0);\n o_0.color_0 = _S41.color_1;\n o_0.colorLine_0 = colorLine_1;\n o_0.cutYsLo_0 = lineCutYsPx_0(0, bandTop_1);\n o_0.cutYsHi_0 = lineCutYsPx_0(4, bandTop_1);\n\n if(lineColorAlongY_0(u_0.rampMode_0, u_0.colorFromY_0, _S41.overridden_1))\n {\n\n sx_0 = 1.0;\n\n }\n else\n {\n\n sx_0 = 0.0;\n\n }\n\n o_0.colorAlongY_0 = sx_0;\n\n o_0.yPx_1 = sy_0;\n VsOut_0 _S58 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S58.color_0;\n\n v_colorLine = _S58.colorLine_0;\n\n v_cutYsLo = _S58.cutYsLo_0;\n\n v_cutYsHi = _S58.cutYsHi_0;\n\n v_yPx = _S58.yPx_1;\n\n v_colorAlongY = _S58.colorAlongY_0;\n\n return;\n}\n\n";
|
|
4
|
+
export const GLSL_FRAGMENT = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n int colorFromY_0;\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nfloat colorCutAt_0(int i_0, vec4 cutsLo_0, vec4 cutsHi_0)\n{\n\n float _S1;\n if(i_0 < 4)\n {\n\n _S1 = cutsLo_0[i_0];\n\n }\n else\n {\n\n _S1 = cutsHi_0[i_0 - 4];\n\n }\n\n return _S1;\n}\n\n\nint thresholdBandAtYPx_0(float yPx_0, int cutCount_0, vec4 cutYsLo_0, vec4 cutYsHi_0)\n{\n\n int band_0 = 0;\n\n int i_1 = 0;\n\n for(;;)\n {\n\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n\n break;\n }\n\n if(yPx_0 <= (colorCutAt_0(i_1, cutYsLo_0, cutYsHi_0)))\n {\n\n band_0 = i_1 + 1;\n\n }\n\n i_1 = i_1 + 1;\n\n }\n\n return band_0;\n}\n\n\nlayout(location = 0)\nout vec4 entryPointParam_fs_main_0;\n\n\nflat in vec4 v_color;\n\n\nflat in vec2 v_colorLine;\n\n\nflat in vec4 v_cutYsLo;\n\n\nflat in vec4 v_cutYsHi;\n\n\nin float v_yPx;\n\n\nflat in float v_colorAlongY;\n\n\nvec4 lineFragmentColor_0(float _S2, vec4 _S3, vec4 _S4, vec4 _S5, float _S6)\n{\n\n if(_S6 < 0.5)\n {\n\n return _S5;\n }\n return u_0.colorBands_0[thresholdBandAtYPx_0(_S2, u_0.colorCutCount_0, _S3, _S4)];\n}\n\n\nvoid main()\n{\n\n entryPointParam_fs_main_0 = lineFragmentColor_0(clamp(v_yPx, v_colorLine.x, v_colorLine.y), v_cutYsLo, v_cutYsHi, v_color, v_colorAlongY);\n\n return;\n}\n\n";
|
|
@@ -11,20 +11,21 @@ export declare const UNIFORM_OFFSET_F32: {
|
|
|
11
11
|
readonly rampMin: 9;
|
|
12
12
|
readonly rampMax: 10;
|
|
13
13
|
readonly rampMidNorm: 11;
|
|
14
|
-
readonly rowHeight:
|
|
15
|
-
readonly rowBandPx:
|
|
16
|
-
readonly rowOffsetPx:
|
|
17
|
-
readonly origin:
|
|
18
|
-
readonly lineWidth:
|
|
19
|
-
readonly zero:
|
|
20
|
-
readonly viewportWidth:
|
|
21
|
-
readonly devicePixelRatio:
|
|
14
|
+
readonly rowHeight: 61;
|
|
15
|
+
readonly rowBandPx: 62;
|
|
16
|
+
readonly rowOffsetPx: 63;
|
|
17
|
+
readonly origin: 64;
|
|
18
|
+
readonly lineWidth: 65;
|
|
19
|
+
readonly zero: 66;
|
|
20
|
+
readonly viewportWidth: 67;
|
|
21
|
+
readonly devicePixelRatio: 68;
|
|
22
22
|
};
|
|
23
23
|
export declare const UNIFORM_OFFSET_I32: {
|
|
24
24
|
readonly valueScaleType: 6;
|
|
25
25
|
readonly rampMode: 8;
|
|
26
26
|
readonly colorCutCount: 12;
|
|
27
|
-
readonly
|
|
27
|
+
readonly colorFromY: 60;
|
|
28
|
+
readonly rowTableKeys: 69;
|
|
28
29
|
};
|
|
29
30
|
export declare const UNIFORM_SLOT_ARRAYS: {
|
|
30
31
|
readonly colorCuts: readonly [16, 20];
|
|
@@ -46,6 +47,7 @@ export interface Uniforms {
|
|
|
46
47
|
colorCutCount: number;
|
|
47
48
|
colorCuts: [[number, number, number, number], [number, number, number, number]];
|
|
48
49
|
colorBands: [[number, number, number, number], [number, number, number, number], [number, number, number, number], [number, number, number, number], [number, number, number, number], [number, number, number, number], [number, number, number, number], [number, number, number, number], [number, number, number, number]];
|
|
50
|
+
colorFromY: number;
|
|
49
51
|
rowHeight: number;
|
|
50
52
|
rowBandPx: number;
|
|
51
53
|
rowOffsetPx: number;
|
|
@@ -19,21 +19,22 @@ export const UNIFORM_OFFSET_F32 = {
|
|
|
19
19
|
rampMin: 9,
|
|
20
20
|
rampMax: 10,
|
|
21
21
|
rampMidNorm: 11,
|
|
22
|
-
rowHeight:
|
|
23
|
-
rowBandPx:
|
|
24
|
-
rowOffsetPx:
|
|
25
|
-
origin:
|
|
26
|
-
lineWidth:
|
|
27
|
-
zero:
|
|
28
|
-
viewportWidth:
|
|
29
|
-
devicePixelRatio:
|
|
22
|
+
rowHeight: 61,
|
|
23
|
+
rowBandPx: 62,
|
|
24
|
+
rowOffsetPx: 63,
|
|
25
|
+
origin: 64,
|
|
26
|
+
lineWidth: 65,
|
|
27
|
+
zero: 66,
|
|
28
|
+
viewportWidth: 67,
|
|
29
|
+
devicePixelRatio: 68,
|
|
30
30
|
};
|
|
31
31
|
// Word indices into a Int32Array view over the uniform buffer.
|
|
32
32
|
export const UNIFORM_OFFSET_I32 = {
|
|
33
33
|
valueScaleType: 6,
|
|
34
34
|
rampMode: 8,
|
|
35
35
|
colorCutCount: 12,
|
|
36
|
-
|
|
36
|
+
colorFromY: 60,
|
|
37
|
+
rowTableKeys: 69,
|
|
37
38
|
};
|
|
38
39
|
// Word indices of each array field’s elements, into a 4-byte-word
|
|
39
40
|
// view over the uniform buffer (Uint32Array or Float32Array — the
|
|
@@ -119,15 +120,16 @@ export function writeUniforms(buf, uniforms) {
|
|
|
119
120
|
f32[57] = uniforms.colorBands[8][1];
|
|
120
121
|
f32[58] = uniforms.colorBands[8][2];
|
|
121
122
|
f32[59] = uniforms.colorBands[8][3];
|
|
122
|
-
|
|
123
|
-
f32[61] = uniforms.
|
|
124
|
-
f32[62] = uniforms.
|
|
125
|
-
f32[63] = uniforms.
|
|
126
|
-
f32[64] = uniforms.
|
|
127
|
-
f32[65] = uniforms.
|
|
128
|
-
f32[66] = uniforms.
|
|
129
|
-
f32[67] = uniforms.
|
|
130
|
-
|
|
123
|
+
i32[60] = uniforms.colorFromY;
|
|
124
|
+
f32[61] = uniforms.rowHeight;
|
|
125
|
+
f32[62] = uniforms.rowBandPx;
|
|
126
|
+
f32[63] = uniforms.rowOffsetPx;
|
|
127
|
+
f32[64] = uniforms.origin;
|
|
128
|
+
f32[65] = uniforms.lineWidth;
|
|
129
|
+
f32[66] = uniforms.zero;
|
|
130
|
+
f32[67] = uniforms.viewportWidth;
|
|
131
|
+
f32[68] = uniforms.devicePixelRatio;
|
|
132
|
+
i32[69] = uniforms.rowTableKeys;
|
|
131
133
|
}
|
|
132
134
|
export const INSTANCE_STRIDE_BYTES = 28;
|
|
133
135
|
export const INSTANCE_STRIDE_WORDS = 7;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const WGSL_SOURCE = "struct Uniforms_std140_0\n{\n @align(16) bpRangeX_0 : vec3<f32>,\n @align(4) canvasHeight_0 : f32,\n @align(16) domainMin_0 : f32,\n @align(4) domainMax_0 : f32,\n @align(8) valueScaleType_0 : i32,\n @align(4) valueSymlogConstant_0 : f32,\n @align(16) rampMode_0 : i32,\n @align(4) rampMin_0 : f32,\n @align(8) rampMax_0 : f32,\n @align(4) rampMidNorm_0 : f32,\n @align(16) colorCutCount_0 : i32,\n @align(16) colorCuts_0 : array<vec4<f32>, i32(2)>,\n @align(16) colorBands_0 : array<vec4<f32>, i32(9)>,\n @align(16) rowHeight_0 : f32,\n @align(4) rowBandPx_0 : f32,\n @align(8) rowOffsetPx_0 : f32,\n @align(4) origin_0 : f32,\n @align(16) lineWidth_0 : f32,\n @align(4) zero_0 : f32,\n @align(8) viewportWidth_0 : f32,\n @align(4) devicePixelRatio_0 : f32,\n @align(16) rowTableKeys_0 : i32,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : Uniforms_std140_0;\n@binding(2) @group(0) var colorRamp_texture_0 : texture_2d<f32>;\n\n@binding(3) @group(0) var colorRamp_sampler_0 : sampler;\n\n@binding(4) @group(0) var rowTable_texture_0 : texture_2d<f32>;\n\n@binding(5) @group(0) var rowTable_sampler_0 : sampler;\n\nfn unpackRGBA_0( c_0 : u32) -> vec4<f32>\n{\n return vec4<f32>(f32((((c_0 >> (u32(0)))) & (u32(255)))), f32((((c_0 >> (u32(8)))) & (u32(255)))), f32((((c_0 >> (u32(16)))) & (u32(255)))), f32((((c_0 >> (u32(24)))) & (u32(255))))) / vec4<f32>(255.0f);\n}\n\nfn rampMidT_0( t_0 : f32, mid_0 : f32) -> f32\n{\n var _S1 : f32 = max(mid_0, 1.0f - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0f * _S1), 0.0f, 1.0f);\n}\n\nfn rampColor_0( ramp_texture_0 : texture_2d<f32>, ramp_sampler_0 : sampler, t_1 : f32) -> vec4<f32>\n{\n return (textureSampleLevel((ramp_texture_0), (ramp_sampler_0), (vec2<f32>((clamp(t_1, 0.0f, 1.0f) * 255.0f + 0.5f) / 256.0f, 0.5f)), (0.0f)));\n}\n\nfn colorCutAt_0( i_0 : i32, cutsLo_0 : vec4<f32>, cutsHi_0 : vec4<f32>) -> f32\n{\n var _S2 : f32;\n if(i_0 < i32(4))\n {\n _S2 = cutsLo_0[i_0];\n }\n else\n {\n _S2 = cutsHi_0[i_0 - i32(4)];\n }\n return _S2;\n}\n\nfn thresholdBand_0( value_0 : f32, cutCount_0 : i32, cutsLo_1 : vec4<f32>, cutsHi_1 : vec4<f32>) -> i32\n{\n var band_0 : i32 = i32(0);\n var i_1 : i32 = i32(0);\n for(;;)\n {\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n break;\n }\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n band_0 = i_1 + i32(1);\n }\n i_1 = i_1 + i32(1);\n }\n return band_0;\n}\n\nfn log1pf_0( x_0 : f32) -> f32\n{\n var u_1 : f32 = 1.0f + x_0;\n var _S3 : f32;\n if(u_1 == 1.0f)\n {\n _S3 = x_0;\n }\n else\n {\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0f));\n }\n return _S3;\n}\n\nfn symlogTransform_0( x_1 : f32, c_1 : f32) -> f32\n{\n return f32((i32(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\nfn normalizeScoreUnclamped_0( score_0 : f32, domainMin_1 : f32, domainMax_1 : f32, scaleType_0 : i32, symlogConstant_0 : f32) -> f32\n{\n var tMax_0 : f32;\n var tMin_0 : f32;\n var t_2 : f32;\n if(scaleType_0 == i32(2))\n {\n var _S4 : f32 = symlogTransform_0(score_0, symlogConstant_0);\n var _S5 : f32 = symlogTransform_0(domainMin_1, symlogConstant_0);\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n tMin_0 = _S5;\n t_2 = _S4;\n }\n else\n {\n if(scaleType_0 == i32(1))\n {\n if(domainMin_1 > 0.0f)\n {\n tMax_0 = domainMin_1;\n }\n else\n {\n tMax_0 = 1.0f;\n }\n var _S6 : f32 = log2(max(score_0, tMax_0));\n var _S7 : f32 = log2(tMax_0);\n tMax_0 = log2(max(domainMax_1, tMax_0));\n tMin_0 = _S7;\n t_2 = _S6;\n }\n else\n {\n tMax_0 = domainMax_1;\n tMin_0 = domainMin_1;\n t_2 = score_0;\n }\n }\n var tRange_0 : f32 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0f)\n {\n if(t_2 > tMin_0)\n {\n tMax_0 = 1.0f;\n }\n else\n {\n tMax_0 = 0.0f;\n }\n return tMax_0;\n }\n return (t_2 - tMin_0) / tRange_0;\n}\n\nfn normalizeScore_0( score_1 : f32, domainMin_2 : f32, domainMax_2 : f32, scaleType_1 : i32, symlogConstant_1 : f32) -> f32\n{\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0f, 1.0f);\n}\n\nfn rowTableWidth_0( keys_0 : u32) -> u32\n{\n return max(min(keys_0, u32(2048)), u32(1));\n}\n\nfn rowTablePlaneHeight_0( keys_1 : u32) -> u32\n{\n var w_0 : u32 = rowTableWidth_0(keys_1);\n var _S8 : u32 = (keys_1 + w_0 - u32(1)) / w_0;\n return max(_S8, u32(1));\n}\n\nfn rowTableTexelX_0( key_0 : u32, keys_2 : u32) -> u32\n{\n var _S9 : u32 = key_0 % rowTableWidth_0(keys_2);\n return _S9;\n}\n\nfn rowTableTexelY_0( key_1 : u32, keys_3 : u32) -> u32\n{\n var _S10 : u32 = key_1 / rowTableWidth_0(keys_3);\n return _S10;\n}\n\nfn byteOf_0( channel_0 : f32) -> u32\n{\n return u32(channel_0 * 255.0f + 0.5f);\n}\n\nstruct RowPlacement_0\n{\n hidden_0 : bool,\n slot_0 : u32,\n color_0 : vec4<f32>,\n};\n\nfn rowTableLookup_0( table_texture_0 : texture_2d<f32>, table_sampler_0 : sampler, key_2 : u32, keys_4 : i32, own_0 : vec4<f32>) -> RowPlacement_0\n{\n var p_0 : RowPlacement_0;\n p_0.hidden_0 = false;\n p_0.slot_0 = key_2;\n p_0.color_0 = own_0;\n if(keys_4 < i32(0))\n {\n return p_0;\n }\n var n_0 : u32 = u32(keys_4);\n if(key_2 >= n_0)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n var h_0 : u32 = rowTablePlaneHeight_0(n_0);\n var _S11 : u32 = rowTableTexelX_0(key_2, n_0);\n var u_2 : f32 = (f32(_S11) + 0.5f) / f32(rowTableWidth_0(n_0));\n var rows_0 : f32 = f32(u32(2) * h_0);\n var y_0 : u32 = rowTableTexelY_0(key_2, n_0);\n var _S12 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0) + 0.5f) / rows_0)), (0.0f)));\n if((_S12.w) < 0.5f)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_0 = ((((byteOf_0(_S12.x)) | ((((byteOf_0(_S12.y)) << (u32(8))))))) | ((((byteOf_0(_S12.z)) << (u32(16))))));\n var _S13 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0 + h_0) + 0.5f) / rows_0)), (0.0f)));\n var _S14 : vec4<f32>;\n if((_S13.w) > 0.0f)\n {\n _S14 = _S13;\n }\n else\n {\n _S14 = own_0;\n }\n p_0.color_0 = _S14;\n return p_0;\n}\n\nfn hpSplitUint_0( value_1 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_1 & (u32(4095)));\n return vec2<f32>(f32(value_1 - lo_0), f32(lo_0));\n}\n\nfn hpToClipX_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_0 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_0;\n var step_0 : f32 = 2.0f / bpRange_0.z;\n return dot(vec3<f32>(-1.0f, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3<f32>(1.0f, step_0, step_0));\n}\n\nfn rowBandTopPx_0( rowOffsetPx_1 : f32, rowHeight_1 : f32, slot_1 : u32) -> f32\n{\n return rowOffsetPx_1 + rowHeight_1 * f32(slot_1);\n}\n\nfn valueToYPxScaled_0( value_2 : f32, domainMin_3 : f32, domainMax_3 : f32, h_1 : f32, scaleType_2 : i32, symlogConstant_2 : f32) -> f32\n{\n return (1.0f - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_1;\n}\n\nfn lineValueYPx_0( _S15 : f32, _S16 : f32) -> f32\n{\n return _S16 + valueToYPxScaled_0(_S15, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\nfn neighbourYPx_0( neighbour_0 : f32, bandTop_0 : f32) -> f32\n{\n var _S17 : f32;\n if(neighbour_0 < -1.50000000274887788e+38f)\n {\n _S17 = u_0.origin_0;\n }\n else\n {\n _S17 = neighbour_0;\n }\n return lineValueYPx_0(_S17, bandTop_0);\n}\n\nfn pxToClipLen_0( px_0 : f32, size_0 : f32) -> f32\n{\n return px_0 * 2.0f / size_0;\n}\n\nfn quadLocal_0( vid_0 : u32) -> vec2<f32>\n{\n var v_0 : u32 = vid_0 % u32(6);\n var _S18 : bool = v_0 == u32(0);\n var _S19 : bool;\n if(_S18)\n {\n _S19 = true;\n }\n else\n {\n _S19 = v_0 == u32(2);\n }\n if(_S19)\n {\n _S19 = true;\n }\n else\n {\n _S19 = v_0 == u32(3);\n }\n var _S20 : f32;\n if(_S19)\n {\n _S20 = 0.0f;\n }\n else\n {\n _S20 = 1.0f;\n }\n if(_S18)\n {\n _S19 = true;\n }\n else\n {\n _S19 = v_0 == u32(1);\n }\n if(_S19)\n {\n _S19 = true;\n }\n else\n {\n _S19 = v_0 == u32(4);\n }\n var _S21 : f32;\n if(_S19)\n {\n _S21 = 0.0f;\n }\n else\n {\n _S21 = 1.0f;\n }\n return vec2<f32>(_S20, _S21);\n}\n\nfn yPxToClipY_0( yPx_0 : f32, canvasHeight_1 : f32) -> f32\n{\n return 1.0f - yPx_0 / canvasHeight_1 * 2.0f;\n}\n\nstruct VsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @interpolate(flat) @location(0) color_1 : vec4<f32>,\n @interpolate(flat) @location(4) colorLine_0 : vec2<f32>,\n @interpolate(flat) @location(1) cutYsLo_0 : vec4<f32>,\n @interpolate(flat) @location(2) cutYsHi_0 : vec4<f32>,\n @location(3) yPx_1 : f32,\n};\n\nstruct vertexInput_0\n{\n @location(0) x_2 : u32,\n @location(1) x2_0 : u32,\n @location(2) y_1 : f32,\n @location(3) color_2 : u32,\n @location(4) row_0 : u32,\n @location(5) prevY_0 : f32,\n @location(6) nextY_0 : f32,\n};\n\nfn markScaleColor_0( _S22 : texture_2d<f32>, _S23 : sampler, _S24 : u32, _S25 : i32, _S26 : f32, _S27 : f32, _S28 : f32, _S29 : i32, _S30 : vec4<f32>, _S31 : vec4<f32>) -> vec4<f32>\n{\n if(_S25 == i32(0))\n {\n return unpackRGBA_0(_S24);\n }\n if(_S24 == u32(2143289345))\n {\n return unpackRGBA_0(u32(4289703855));\n }\n var scaleType_3 : i32;\n if(((_S24 & (u32(2139095040)))) == u32(2139095040))\n {\n if(((_S24 & (u32(8388607)))) != u32(0))\n {\n return unpackRGBA_0(u32(4286611584));\n }\n var negative_0 : bool = ((_S24 & (u32(2147483648)))) != u32(0);\n if(_S25 == i32(3))\n {\n if(negative_0)\n {\n scaleType_3 = i32(0);\n }\n else\n {\n scaleType_3 = _S29;\n }\n return u_0.colorBands_0[scaleType_3];\n }\n var _S32 : f32;\n if(negative_0)\n {\n _S32 = 0.0f;\n }\n else\n {\n _S32 = 1.0f;\n }\n return rampColor_0(_S22, _S23, rampMidT_0(_S32, _S28));\n }\n var value_3 : f32 = (bitcast<f32>((_S24)));\n if(_S25 == i32(3))\n {\n return u_0.colorBands_0[thresholdBand_0(value_3, _S29, _S30, _S31)];\n }\n if(_S25 == i32(2))\n {\n scaleType_3 = i32(1);\n }\n else\n {\n scaleType_3 = i32(0);\n }\n return rampColor_0(_S22, _S23, rampMidT_0(normalizeScore_0(value_3, _S26, _S27, scaleType_3, 1.0f), _S28));\n}\n\nfn lineBpToClipX_0( _S33 : u32) -> f32\n{\n return hpToClipX_0(hpSplitUint_0(_S33), u_0.bpRangeX_0, u_0.zero_0);\n}\n\nfn lineColorYPx_0( _S34 : f32, _S35 : f32) -> f32\n{\n return _S35 + (1.0f - normalizeScoreUnclamped_0(_S34, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\nfn lineCutYsPx_0( _S36 : i32, _S37 : f32) -> vec4<f32>\n{\n var ys_0 : vec4<f32> = vec4<f32>(0.0f);\n var k_0 : i32 = i32(0);\n for(;;)\n {\n if(k_0 < i32(4))\n {\n }\n else\n {\n break;\n }\n var _S38 : i32 = _S36 + k_0;\n if(_S38 < (u_0.colorCutCount_0))\n {\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S38, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]), _S37);\n }\n k_0 = k_0 + i32(1);\n }\n return ys_0;\n}\n\n@vertex\nfn vs_main( _S39 : vertexInput_0, @builtin(vertex_index) vid_1 : u32) -> VsOut_0\n{\n var o_0 : VsOut_0;\n var _S40 : RowPlacement_0 = rowTableLookup_0(rowTable_texture_0, rowTable_sampler_0, _S39.row_0, u_0.rowTableKeys_0, markScaleColor_0(colorRamp_texture_0, colorRamp_sampler_0, _S39.color_2, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]));\n if(_S40.hidden_0)\n {\n o_0.position_0 = vec4<f32>(2.0f, 2.0f, 0.0f, 1.0f);\n var _S41 : vec4<f32> = vec4<f32>(0.0f);\n o_0.color_1 = _S41;\n o_0.colorLine_0 = vec2<f32>(0.0f);\n o_0.cutYsLo_0 = _S41;\n o_0.cutYsHi_0 = _S41;\n o_0.yPx_1 = 0.0f;\n return o_0;\n }\n var _S42 : f32 = lineBpToClipX_0(_S39.x_2);\n var _S43 : f32 = lineBpToClipX_0(_S39.x2_0);\n var bandTop_1 : f32 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S40.slot_0);\n var _S44 : f32 = lineValueYPx_0(_S39.y_1, bandTop_1);\n var prevPx_0 : f32 = neighbourYPx_0(_S39.prevY_0, bandTop_1);\n var nextPx_0 : f32 = neighbourYPx_0(_S39.nextY_0, bandTop_1);\n var hw_0 : f32 = u_0.lineWidth_0 * 0.5f;\n var hwx_0 : f32 = pxToClipLen_0(hw_0, u_0.viewportWidth_0);\n var seg_0 : u32 = vid_1 / u32(6);\n var q_0 : vec2<f32> = quadLocal_0(vid_1);\n var sx_0 : f32;\n var sy_0 : f32;\n var colorLine_1 : vec2<f32>;\n if(seg_0 == u32(0))\n {\n var _S45 : f32 = max(prevPx_0, _S44);\n var _S46 : f32 = min(prevPx_0, _S44);\n var _S47 : f32 = mix(_S45 + hw_0, _S46 - hw_0, q_0.y);\n var _S48 : vec2<f32> = vec2<f32>(_S46, _S45);\n sx_0 = mix(_S42 - hwx_0, _S42 + hwx_0, q_0.x);\n sy_0 = _S47;\n colorLine_1 = _S48;\n }\n else\n {\n if(seg_0 == u32(1))\n {\n var _S49 : f32 = mix(_S44 + hw_0, _S44 - hw_0, q_0.y);\n var _S50 : f32 = lineColorYPx_0(_S39.y_1, bandTop_1);\n var _S51 : vec2<f32> = vec2<f32>(_S50, _S50);\n sx_0 = mix(min(_S42, _S43) - hwx_0, max(_S42, _S43) + hwx_0, q_0.x);\n sy_0 = _S49;\n colorLine_1 = _S51;\n }\n else\n {\n var _S52 : f32 = max(_S44, nextPx_0);\n var _S53 : f32 = min(_S44, nextPx_0);\n var _S54 : f32 = mix(_S52 + hw_0, _S53 - hw_0, q_0.y);\n var _S55 : vec2<f32> = vec2<f32>(_S53, _S52);\n sx_0 = mix(_S43 - hwx_0, _S43 + hwx_0, q_0.x);\n sy_0 = _S54;\n colorLine_1 = _S55;\n }\n }\n o_0.position_0 = vec4<f32>(sx_0, yPxToClipY_0(sy_0, u_0.canvasHeight_0), 0.0f, 1.0f);\n o_0.color_1 = _S40.color_0;\n o_0.colorLine_0 = colorLine_1;\n o_0.cutYsLo_0 = lineCutYsPx_0(i32(0), bandTop_1);\n o_0.cutYsHi_0 = lineCutYsPx_0(i32(4), bandTop_1);\n o_0.yPx_1 = sy_0;\n return o_0;\n}\n\nfn thresholdBandAtYPx_0( yPx_2 : f32, cutCount_1 : i32, cutYsLo_1 : vec4<f32>, cutYsHi_1 : vec4<f32>) -> i32\n{\n var band_1 : i32 = i32(0);\n var i_2 : i32 = i32(0);\n for(;;)\n {\n if(i_2 < cutCount_1)\n {\n }\n else\n {\n break;\n }\n if(yPx_2 <= (colorCutAt_0(i_2, cutYsLo_1, cutYsHi_1)))\n {\n band_1 = i_2 + i32(1);\n }\n i_2 = i_2 + i32(1);\n }\n return band_1;\n}\n\nstruct pixelOutput_0\n{\n @location(0) output_0 : vec4<f32>,\n};\n\nstruct pixelInput_0\n{\n @interpolate(flat) @location(0) color_3 : vec4<f32>,\n @interpolate(flat) @location(4) colorLine_2 : vec2<f32>,\n @interpolate(flat) @location(1) cutYsLo_2 : vec4<f32>,\n @interpolate(flat) @location(2) cutYsHi_2 : vec4<f32>,\n @location(3) yPx_3 : f32,\n};\n\nfn lineFragmentColor_0( _S56 : f32, _S57 : vec4<f32>, _S58 : vec4<f32>, _S59 : vec4<f32>) -> vec4<f32>\n{\n if((u_0.rampMode_0) != i32(3))\n {\n return _S59;\n }\n return u_0.colorBands_0[thresholdBandAtYPx_0(_S56, u_0.colorCutCount_0, _S57, _S58)];\n}\n\n@fragment\nfn fs_main( _S60 : pixelInput_0, @builtin(position) position_1 : vec4<f32>) -> pixelOutput_0\n{\n var _S61 : pixelOutput_0 = pixelOutput_0( lineFragmentColor_0(clamp(_S60.yPx_3, _S60.colorLine_2.x, _S60.colorLine_2.y), _S60.cutYsLo_2, _S60.cutYsHi_2, _S60.color_3) );\n return _S61;\n}\n\n";
|
|
1
|
+
export declare const WGSL_SOURCE = "struct Uniforms_std140_0\n{\n @align(16) bpRangeX_0 : vec3<f32>,\n @align(4) canvasHeight_0 : f32,\n @align(16) domainMin_0 : f32,\n @align(4) domainMax_0 : f32,\n @align(8) valueScaleType_0 : i32,\n @align(4) valueSymlogConstant_0 : f32,\n @align(16) rampMode_0 : i32,\n @align(4) rampMin_0 : f32,\n @align(8) rampMax_0 : f32,\n @align(4) rampMidNorm_0 : f32,\n @align(16) colorCutCount_0 : i32,\n @align(16) colorCuts_0 : array<vec4<f32>, i32(2)>,\n @align(16) colorBands_0 : array<vec4<f32>, i32(9)>,\n @align(16) colorFromY_0 : i32,\n @align(4) rowHeight_0 : f32,\n @align(8) rowBandPx_0 : f32,\n @align(4) rowOffsetPx_0 : f32,\n @align(16) origin_0 : f32,\n @align(4) lineWidth_0 : f32,\n @align(8) zero_0 : f32,\n @align(4) viewportWidth_0 : f32,\n @align(16) devicePixelRatio_0 : f32,\n @align(4) rowTableKeys_0 : i32,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : Uniforms_std140_0;\n@binding(2) @group(0) var colorRamp_texture_0 : texture_2d<f32>;\n\n@binding(3) @group(0) var colorRamp_sampler_0 : sampler;\n\n@binding(4) @group(0) var rowTable_texture_0 : texture_2d<f32>;\n\n@binding(5) @group(0) var rowTable_sampler_0 : sampler;\n\nfn unpackRGBA_0( c_0 : u32) -> vec4<f32>\n{\n return vec4<f32>(f32((((c_0 >> (u32(0)))) & (u32(255)))), f32((((c_0 >> (u32(8)))) & (u32(255)))), f32((((c_0 >> (u32(16)))) & (u32(255)))), f32((((c_0 >> (u32(24)))) & (u32(255))))) / vec4<f32>(255.0f);\n}\n\nfn rampMidT_0( t_0 : f32, mid_0 : f32) -> f32\n{\n var _S1 : f32 = max(mid_0, 1.0f - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0f * _S1), 0.0f, 1.0f);\n}\n\nfn rampColor_0( ramp_texture_0 : texture_2d<f32>, ramp_sampler_0 : sampler, t_1 : f32) -> vec4<f32>\n{\n return (textureSampleLevel((ramp_texture_0), (ramp_sampler_0), (vec2<f32>((clamp(t_1, 0.0f, 1.0f) * 255.0f + 0.5f) / 256.0f, 0.5f)), (0.0f)));\n}\n\nfn colorCutAt_0( i_0 : i32, cutsLo_0 : vec4<f32>, cutsHi_0 : vec4<f32>) -> f32\n{\n var _S2 : f32;\n if(i_0 < i32(4))\n {\n _S2 = cutsLo_0[i_0];\n }\n else\n {\n _S2 = cutsHi_0[i_0 - i32(4)];\n }\n return _S2;\n}\n\nfn thresholdBand_0( value_0 : f32, cutCount_0 : i32, cutsLo_1 : vec4<f32>, cutsHi_1 : vec4<f32>) -> i32\n{\n var band_0 : i32 = i32(0);\n var i_1 : i32 = i32(0);\n for(;;)\n {\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n break;\n }\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n band_0 = i_1 + i32(1);\n }\n i_1 = i_1 + i32(1);\n }\n return band_0;\n}\n\nfn log1pf_0( x_0 : f32) -> f32\n{\n var u_1 : f32 = 1.0f + x_0;\n var _S3 : f32;\n if(u_1 == 1.0f)\n {\n _S3 = x_0;\n }\n else\n {\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0f));\n }\n return _S3;\n}\n\nfn symlogTransform_0( x_1 : f32, c_1 : f32) -> f32\n{\n return f32((i32(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\nfn normalizeScoreUnclamped_0( score_0 : f32, domainMin_1 : f32, domainMax_1 : f32, scaleType_0 : i32, symlogConstant_0 : f32) -> f32\n{\n var tMax_0 : f32;\n var tMin_0 : f32;\n var t_2 : f32;\n if(scaleType_0 == i32(2))\n {\n var _S4 : f32 = symlogTransform_0(score_0, symlogConstant_0);\n var _S5 : f32 = symlogTransform_0(domainMin_1, symlogConstant_0);\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n tMin_0 = _S5;\n t_2 = _S4;\n }\n else\n {\n if(scaleType_0 == i32(1))\n {\n if(domainMin_1 > 0.0f)\n {\n tMax_0 = domainMin_1;\n }\n else\n {\n tMax_0 = 1.0f;\n }\n var _S6 : f32 = log2(max(score_0, tMax_0));\n var _S7 : f32 = log2(tMax_0);\n tMax_0 = log2(max(domainMax_1, tMax_0));\n tMin_0 = _S7;\n t_2 = _S6;\n }\n else\n {\n tMax_0 = domainMax_1;\n tMin_0 = domainMin_1;\n t_2 = score_0;\n }\n }\n var tRange_0 : f32 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0f)\n {\n if(t_2 > tMin_0)\n {\n tMax_0 = 1.0f;\n }\n else\n {\n tMax_0 = 0.0f;\n }\n return tMax_0;\n }\n return (t_2 - tMin_0) / tRange_0;\n}\n\nfn normalizeScore_0( score_1 : f32, domainMin_2 : f32, domainMax_2 : f32, scaleType_1 : i32, symlogConstant_1 : f32) -> f32\n{\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0f, 1.0f);\n}\n\nfn rowTableWidth_0( keys_0 : u32) -> u32\n{\n return max(min(keys_0, u32(2048)), u32(1));\n}\n\nfn rowTablePlaneHeight_0( keys_1 : u32) -> u32\n{\n var w_0 : u32 = rowTableWidth_0(keys_1);\n var _S8 : u32 = (keys_1 + w_0 - u32(1)) / w_0;\n return max(_S8, u32(1));\n}\n\nfn rowTableTexelX_0( key_0 : u32, keys_2 : u32) -> u32\n{\n var _S9 : u32 = key_0 % rowTableWidth_0(keys_2);\n return _S9;\n}\n\nfn rowTableTexelY_0( key_1 : u32, keys_3 : u32) -> u32\n{\n var _S10 : u32 = key_1 / rowTableWidth_0(keys_3);\n return _S10;\n}\n\nfn byteOf_0( channel_0 : f32) -> u32\n{\n return u32(channel_0 * 255.0f + 0.5f);\n}\n\nstruct RowPlacement_0\n{\n hidden_0 : bool,\n slot_0 : u32,\n color_0 : vec4<f32>,\n overridden_0 : bool,\n};\n\nfn rowTableLookup_0( table_texture_0 : texture_2d<f32>, table_sampler_0 : sampler, key_2 : u32, keys_4 : i32, own_0 : vec4<f32>) -> RowPlacement_0\n{\n var p_0 : RowPlacement_0;\n p_0.hidden_0 = false;\n p_0.slot_0 = key_2;\n p_0.color_0 = own_0;\n p_0.overridden_0 = false;\n if(keys_4 < i32(0))\n {\n return p_0;\n }\n var n_0 : u32 = u32(keys_4);\n if(key_2 >= n_0)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n var h_0 : u32 = rowTablePlaneHeight_0(n_0);\n var _S11 : u32 = rowTableTexelX_0(key_2, n_0);\n var u_2 : f32 = (f32(_S11) + 0.5f) / f32(rowTableWidth_0(n_0));\n var rows_0 : f32 = f32(u32(2) * h_0);\n var y_0 : u32 = rowTableTexelY_0(key_2, n_0);\n var _S12 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0) + 0.5f) / rows_0)), (0.0f)));\n if((_S12.w) < 0.5f)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_0 = ((((byteOf_0(_S12.x)) | ((((byteOf_0(_S12.y)) << (u32(8))))))) | ((((byteOf_0(_S12.z)) << (u32(16))))));\n var _S13 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0 + h_0) + 0.5f) / rows_0)), (0.0f)));\n var _S14 : bool = (_S13.w) > 0.0f;\n p_0.overridden_0 = _S14;\n var _S15 : vec4<f32>;\n if(_S14)\n {\n _S15 = _S13;\n }\n else\n {\n _S15 = own_0;\n }\n p_0.color_0 = _S15;\n return p_0;\n}\n\nfn hpSplitUint_0( value_1 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_1 & (u32(4095)));\n return vec2<f32>(f32(value_1 - lo_0), f32(lo_0));\n}\n\nfn hpToClipX_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_0 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_0;\n var step_0 : f32 = 2.0f / bpRange_0.z;\n return dot(vec3<f32>(-1.0f, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3<f32>(1.0f, step_0, step_0));\n}\n\nfn rowBandTopPx_0( rowOffsetPx_1 : f32, rowHeight_1 : f32, slot_1 : u32) -> f32\n{\n return rowOffsetPx_1 + rowHeight_1 * f32(slot_1);\n}\n\nfn valueToYPxScaled_0( value_2 : f32, domainMin_3 : f32, domainMax_3 : f32, h_1 : f32, scaleType_2 : i32, symlogConstant_2 : f32) -> f32\n{\n return (1.0f - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_1;\n}\n\nfn lineValueYPx_0( _S16 : f32, _S17 : f32) -> f32\n{\n return _S17 + valueToYPxScaled_0(_S16, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\nfn neighbourYPx_0( neighbour_0 : f32, bandTop_0 : f32) -> f32\n{\n var _S18 : f32;\n if(neighbour_0 < -1.50000000274887788e+38f)\n {\n _S18 = u_0.origin_0;\n }\n else\n {\n _S18 = neighbour_0;\n }\n return lineValueYPx_0(_S18, bandTop_0);\n}\n\nfn pxToClipLen_0( px_0 : f32, size_0 : f32) -> f32\n{\n return px_0 * 2.0f / size_0;\n}\n\nfn quadLocal_0( vid_0 : u32) -> vec2<f32>\n{\n var v_0 : u32 = vid_0 % u32(6);\n var _S19 : bool = v_0 == u32(0);\n var _S20 : bool;\n if(_S19)\n {\n _S20 = true;\n }\n else\n {\n _S20 = v_0 == u32(2);\n }\n if(_S20)\n {\n _S20 = true;\n }\n else\n {\n _S20 = v_0 == u32(3);\n }\n var _S21 : f32;\n if(_S20)\n {\n _S21 = 0.0f;\n }\n else\n {\n _S21 = 1.0f;\n }\n if(_S19)\n {\n _S20 = true;\n }\n else\n {\n _S20 = v_0 == u32(1);\n }\n if(_S20)\n {\n _S20 = true;\n }\n else\n {\n _S20 = v_0 == u32(4);\n }\n var _S22 : f32;\n if(_S20)\n {\n _S22 = 0.0f;\n }\n else\n {\n _S22 = 1.0f;\n }\n return vec2<f32>(_S21, _S22);\n}\n\nfn yPxToClipY_0( yPx_0 : f32, canvasHeight_1 : f32) -> f32\n{\n return 1.0f - yPx_0 / canvasHeight_1 * 2.0f;\n}\n\nfn lineColorAlongY_0( rampMode_1 : i32, colorFromY_1 : i32, overridden_1 : bool) -> bool\n{\n var _S23 : bool;\n if(rampMode_1 == i32(3))\n {\n _S23 = colorFromY_1 != i32(0);\n }\n else\n {\n _S23 = false;\n }\n if(_S23)\n {\n _S23 = !overridden_1;\n }\n else\n {\n _S23 = false;\n }\n return _S23;\n}\n\nstruct VsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @interpolate(flat) @location(0) color_1 : vec4<f32>,\n @interpolate(flat) @location(5) colorLine_0 : vec2<f32>,\n @interpolate(flat) @location(1) cutYsLo_0 : vec4<f32>,\n @interpolate(flat) @location(2) cutYsHi_0 : vec4<f32>,\n @location(3) yPx_1 : f32,\n @interpolate(flat) @location(4) colorAlongY_0 : f32,\n};\n\nstruct vertexInput_0\n{\n @location(0) x_2 : u32,\n @location(1) x2_0 : u32,\n @location(2) y_1 : f32,\n @location(3) color_2 : u32,\n @location(4) row_0 : u32,\n @location(5) prevY_0 : f32,\n @location(6) nextY_0 : f32,\n};\n\nfn markScaleColor_0( _S24 : texture_2d<f32>, _S25 : sampler, _S26 : u32, _S27 : i32, _S28 : f32, _S29 : f32, _S30 : f32, _S31 : i32, _S32 : vec4<f32>, _S33 : vec4<f32>) -> vec4<f32>\n{\n if(_S27 == i32(0))\n {\n return unpackRGBA_0(_S26);\n }\n if(_S26 == u32(2143289345))\n {\n return unpackRGBA_0(u32(4289703855));\n }\n var scaleType_3 : i32;\n if(((_S26 & (u32(2139095040)))) == u32(2139095040))\n {\n if(((_S26 & (u32(8388607)))) != u32(0))\n {\n return unpackRGBA_0(u32(4286611584));\n }\n var negative_0 : bool = ((_S26 & (u32(2147483648)))) != u32(0);\n if(_S27 == i32(3))\n {\n if(negative_0)\n {\n scaleType_3 = i32(0);\n }\n else\n {\n scaleType_3 = _S31;\n }\n return u_0.colorBands_0[scaleType_3];\n }\n var _S34 : f32;\n if(negative_0)\n {\n _S34 = 0.0f;\n }\n else\n {\n _S34 = 1.0f;\n }\n return rampColor_0(_S24, _S25, rampMidT_0(_S34, _S30));\n }\n var value_3 : f32 = (bitcast<f32>((_S26)));\n if(_S27 == i32(3))\n {\n return u_0.colorBands_0[thresholdBand_0(value_3, _S31, _S32, _S33)];\n }\n if(_S27 == i32(2))\n {\n scaleType_3 = i32(1);\n }\n else\n {\n scaleType_3 = i32(0);\n }\n return rampColor_0(_S24, _S25, rampMidT_0(normalizeScore_0(value_3, _S28, _S29, scaleType_3, 1.0f), _S30));\n}\n\nfn lineBpToClipX_0( _S35 : u32) -> f32\n{\n return hpToClipX_0(hpSplitUint_0(_S35), u_0.bpRangeX_0, u_0.zero_0);\n}\n\nfn lineColorYPx_0( _S36 : f32, _S37 : f32) -> f32\n{\n return _S37 + (1.0f - normalizeScoreUnclamped_0(_S36, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\nfn lineCutYsPx_0( _S38 : i32, _S39 : f32) -> vec4<f32>\n{\n var ys_0 : vec4<f32> = vec4<f32>(0.0f);\n var k_0 : i32 = i32(0);\n for(;;)\n {\n if(k_0 < i32(4))\n {\n }\n else\n {\n break;\n }\n var _S40 : i32 = _S38 + k_0;\n if(_S40 < (u_0.colorCutCount_0))\n {\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S40, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]), _S39);\n }\n k_0 = k_0 + i32(1);\n }\n return ys_0;\n}\n\n@vertex\nfn vs_main( _S41 : vertexInput_0, @builtin(vertex_index) vid_1 : u32) -> VsOut_0\n{\n var o_0 : VsOut_0;\n var _S42 : RowPlacement_0 = rowTableLookup_0(rowTable_texture_0, rowTable_sampler_0, _S41.row_0, u_0.rowTableKeys_0, markScaleColor_0(colorRamp_texture_0, colorRamp_sampler_0, _S41.color_2, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]));\n if(_S42.hidden_0)\n {\n o_0.position_0 = vec4<f32>(2.0f, 2.0f, 0.0f, 1.0f);\n var _S43 : vec4<f32> = vec4<f32>(0.0f);\n o_0.color_1 = _S43;\n o_0.colorLine_0 = vec2<f32>(0.0f);\n o_0.cutYsLo_0 = _S43;\n o_0.cutYsHi_0 = _S43;\n o_0.colorAlongY_0 = 0.0f;\n o_0.yPx_1 = 0.0f;\n return o_0;\n }\n var _S44 : f32 = lineBpToClipX_0(_S41.x_2);\n var _S45 : f32 = lineBpToClipX_0(_S41.x2_0);\n var bandTop_1 : f32 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S42.slot_0);\n var _S46 : f32 = lineValueYPx_0(_S41.y_1, bandTop_1);\n var prevPx_0 : f32 = neighbourYPx_0(_S41.prevY_0, bandTop_1);\n var nextPx_0 : f32 = neighbourYPx_0(_S41.nextY_0, bandTop_1);\n var hw_0 : f32 = u_0.lineWidth_0 * 0.5f;\n var hwx_0 : f32 = pxToClipLen_0(hw_0, u_0.viewportWidth_0);\n var seg_0 : u32 = vid_1 / u32(6);\n var q_0 : vec2<f32> = quadLocal_0(vid_1);\n var sx_0 : f32;\n var sy_0 : f32;\n var colorLine_1 : vec2<f32>;\n if(seg_0 == u32(0))\n {\n var _S47 : f32 = max(prevPx_0, _S46);\n var _S48 : f32 = min(prevPx_0, _S46);\n var _S49 : f32 = mix(_S47 + hw_0, _S48 - hw_0, q_0.y);\n var _S50 : vec2<f32> = vec2<f32>(_S48, _S47);\n sx_0 = mix(_S44 - hwx_0, _S44 + hwx_0, q_0.x);\n sy_0 = _S49;\n colorLine_1 = _S50;\n }\n else\n {\n if(seg_0 == u32(1))\n {\n var _S51 : f32 = mix(_S46 + hw_0, _S46 - hw_0, q_0.y);\n var _S52 : f32 = lineColorYPx_0(_S41.y_1, bandTop_1);\n var _S53 : vec2<f32> = vec2<f32>(_S52, _S52);\n sx_0 = mix(min(_S44, _S45) - hwx_0, max(_S44, _S45) + hwx_0, q_0.x);\n sy_0 = _S51;\n colorLine_1 = _S53;\n }\n else\n {\n var _S54 : f32 = max(_S46, nextPx_0);\n var _S55 : f32 = min(_S46, nextPx_0);\n var _S56 : f32 = mix(_S54 + hw_0, _S55 - hw_0, q_0.y);\n var _S57 : vec2<f32> = vec2<f32>(_S55, _S54);\n sx_0 = mix(_S45 - hwx_0, _S45 + hwx_0, q_0.x);\n sy_0 = _S56;\n colorLine_1 = _S57;\n }\n }\n o_0.position_0 = vec4<f32>(sx_0, yPxToClipY_0(sy_0, u_0.canvasHeight_0), 0.0f, 1.0f);\n o_0.color_1 = _S42.color_0;\n o_0.colorLine_0 = colorLine_1;\n o_0.cutYsLo_0 = lineCutYsPx_0(i32(0), bandTop_1);\n o_0.cutYsHi_0 = lineCutYsPx_0(i32(4), bandTop_1);\n if(lineColorAlongY_0(u_0.rampMode_0, u_0.colorFromY_0, _S42.overridden_0))\n {\n sx_0 = 1.0f;\n }\n else\n {\n sx_0 = 0.0f;\n }\n o_0.colorAlongY_0 = sx_0;\n o_0.yPx_1 = sy_0;\n return o_0;\n}\n\nfn thresholdBandAtYPx_0( yPx_2 : f32, cutCount_1 : i32, cutYsLo_1 : vec4<f32>, cutYsHi_1 : vec4<f32>) -> i32\n{\n var band_1 : i32 = i32(0);\n var i_2 : i32 = i32(0);\n for(;;)\n {\n if(i_2 < cutCount_1)\n {\n }\n else\n {\n break;\n }\n if(yPx_2 <= (colorCutAt_0(i_2, cutYsLo_1, cutYsHi_1)))\n {\n band_1 = i_2 + i32(1);\n }\n i_2 = i_2 + i32(1);\n }\n return band_1;\n}\n\nstruct pixelOutput_0\n{\n @location(0) output_0 : vec4<f32>,\n};\n\nstruct pixelInput_0\n{\n @interpolate(flat) @location(0) color_3 : vec4<f32>,\n @interpolate(flat) @location(5) colorLine_2 : vec2<f32>,\n @interpolate(flat) @location(1) cutYsLo_2 : vec4<f32>,\n @interpolate(flat) @location(2) cutYsHi_2 : vec4<f32>,\n @location(3) yPx_3 : f32,\n @interpolate(flat) @location(4) colorAlongY_1 : f32,\n};\n\nfn lineFragmentColor_0( _S58 : f32, _S59 : vec4<f32>, _S60 : vec4<f32>, _S61 : vec4<f32>, _S62 : f32) -> vec4<f32>\n{\n if(_S62 < 0.5f)\n {\n return _S61;\n }\n return u_0.colorBands_0[thresholdBandAtYPx_0(_S58, u_0.colorCutCount_0, _S59, _S60)];\n}\n\n@fragment\nfn fs_main( _S63 : pixelInput_0, @builtin(position) position_1 : vec4<f32>) -> pixelOutput_0\n{\n var _S64 : pixelOutput_0 = pixelOutput_0( lineFragmentColor_0(clamp(_S63.yPx_3, _S63.colorLine_2.x, _S63.colorLine_2.y), _S63.cutYsLo_2, _S63.cutYsHi_2, _S63.color_3, _S63.colorAlongY_1) );\n return _S64;\n}\n\n";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from lineStepMark.slang.
|
|
2
2
|
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
-
export const WGSL_SOURCE = "struct Uniforms_std140_0\n{\n @align(16) bpRangeX_0 : vec3<f32>,\n @align(4) canvasHeight_0 : f32,\n @align(16) domainMin_0 : f32,\n @align(4) domainMax_0 : f32,\n @align(8) valueScaleType_0 : i32,\n @align(4) valueSymlogConstant_0 : f32,\n @align(16) rampMode_0 : i32,\n @align(4) rampMin_0 : f32,\n @align(8) rampMax_0 : f32,\n @align(4) rampMidNorm_0 : f32,\n @align(16) colorCutCount_0 : i32,\n @align(16) colorCuts_0 : array<vec4<f32>, i32(2)>,\n @align(16) colorBands_0 : array<vec4<f32>, i32(9)>,\n @align(16) rowHeight_0 : f32,\n @align(4) rowBandPx_0 : f32,\n @align(8) rowOffsetPx_0 : f32,\n @align(4) origin_0 : f32,\n @align(16) lineWidth_0 : f32,\n @align(4) zero_0 : f32,\n @align(8) viewportWidth_0 : f32,\n @align(4) devicePixelRatio_0 : f32,\n @align(16) rowTableKeys_0 : i32,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : Uniforms_std140_0;\n@binding(2) @group(0) var colorRamp_texture_0 : texture_2d<f32>;\n\n@binding(3) @group(0) var colorRamp_sampler_0 : sampler;\n\n@binding(4) @group(0) var rowTable_texture_0 : texture_2d<f32>;\n\n@binding(5) @group(0) var rowTable_sampler_0 : sampler;\n\nfn unpackRGBA_0( c_0 : u32) -> vec4<f32>\n{\n return vec4<f32>(f32((((c_0 >> (u32(0)))) & (u32(255)))), f32((((c_0 >> (u32(8)))) & (u32(255)))), f32((((c_0 >> (u32(16)))) & (u32(255)))), f32((((c_0 >> (u32(24)))) & (u32(255))))) / vec4<f32>(255.0f);\n}\n\nfn rampMidT_0( t_0 : f32, mid_0 : f32) -> f32\n{\n var _S1 : f32 = max(mid_0, 1.0f - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0f * _S1), 0.0f, 1.0f);\n}\n\nfn rampColor_0( ramp_texture_0 : texture_2d<f32>, ramp_sampler_0 : sampler, t_1 : f32) -> vec4<f32>\n{\n return (textureSampleLevel((ramp_texture_0), (ramp_sampler_0), (vec2<f32>((clamp(t_1, 0.0f, 1.0f) * 255.0f + 0.5f) / 256.0f, 0.5f)), (0.0f)));\n}\n\nfn colorCutAt_0( i_0 : i32, cutsLo_0 : vec4<f32>, cutsHi_0 : vec4<f32>) -> f32\n{\n var _S2 : f32;\n if(i_0 < i32(4))\n {\n _S2 = cutsLo_0[i_0];\n }\n else\n {\n _S2 = cutsHi_0[i_0 - i32(4)];\n }\n return _S2;\n}\n\nfn thresholdBand_0( value_0 : f32, cutCount_0 : i32, cutsLo_1 : vec4<f32>, cutsHi_1 : vec4<f32>) -> i32\n{\n var band_0 : i32 = i32(0);\n var i_1 : i32 = i32(0);\n for(;;)\n {\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n break;\n }\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n band_0 = i_1 + i32(1);\n }\n i_1 = i_1 + i32(1);\n }\n return band_0;\n}\n\nfn log1pf_0( x_0 : f32) -> f32\n{\n var u_1 : f32 = 1.0f + x_0;\n var _S3 : f32;\n if(u_1 == 1.0f)\n {\n _S3 = x_0;\n }\n else\n {\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0f));\n }\n return _S3;\n}\n\nfn symlogTransform_0( x_1 : f32, c_1 : f32) -> f32\n{\n return f32((i32(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\nfn normalizeScoreUnclamped_0( score_0 : f32, domainMin_1 : f32, domainMax_1 : f32, scaleType_0 : i32, symlogConstant_0 : f32) -> f32\n{\n var tMax_0 : f32;\n var tMin_0 : f32;\n var t_2 : f32;\n if(scaleType_0 == i32(2))\n {\n var _S4 : f32 = symlogTransform_0(score_0, symlogConstant_0);\n var _S5 : f32 = symlogTransform_0(domainMin_1, symlogConstant_0);\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n tMin_0 = _S5;\n t_2 = _S4;\n }\n else\n {\n if(scaleType_0 == i32(1))\n {\n if(domainMin_1 > 0.0f)\n {\n tMax_0 = domainMin_1;\n }\n else\n {\n tMax_0 = 1.0f;\n }\n var _S6 : f32 = log2(max(score_0, tMax_0));\n var _S7 : f32 = log2(tMax_0);\n tMax_0 = log2(max(domainMax_1, tMax_0));\n tMin_0 = _S7;\n t_2 = _S6;\n }\n else\n {\n tMax_0 = domainMax_1;\n tMin_0 = domainMin_1;\n t_2 = score_0;\n }\n }\n var tRange_0 : f32 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0f)\n {\n if(t_2 > tMin_0)\n {\n tMax_0 = 1.0f;\n }\n else\n {\n tMax_0 = 0.0f;\n }\n return tMax_0;\n }\n return (t_2 - tMin_0) / tRange_0;\n}\n\nfn normalizeScore_0( score_1 : f32, domainMin_2 : f32, domainMax_2 : f32, scaleType_1 : i32, symlogConstant_1 : f32) -> f32\n{\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0f, 1.0f);\n}\n\nfn rowTableWidth_0( keys_0 : u32) -> u32\n{\n return max(min(keys_0, u32(2048)), u32(1));\n}\n\nfn rowTablePlaneHeight_0( keys_1 : u32) -> u32\n{\n var w_0 : u32 = rowTableWidth_0(keys_1);\n var _S8 : u32 = (keys_1 + w_0 - u32(1)) / w_0;\n return max(_S8, u32(1));\n}\n\nfn rowTableTexelX_0( key_0 : u32, keys_2 : u32) -> u32\n{\n var _S9 : u32 = key_0 % rowTableWidth_0(keys_2);\n return _S9;\n}\n\nfn rowTableTexelY_0( key_1 : u32, keys_3 : u32) -> u32\n{\n var _S10 : u32 = key_1 / rowTableWidth_0(keys_3);\n return _S10;\n}\n\nfn byteOf_0( channel_0 : f32) -> u32\n{\n return u32(channel_0 * 255.0f + 0.5f);\n}\n\nstruct RowPlacement_0\n{\n hidden_0 : bool,\n slot_0 : u32,\n color_0 : vec4<f32>,\n};\n\nfn rowTableLookup_0( table_texture_0 : texture_2d<f32>, table_sampler_0 : sampler, key_2 : u32, keys_4 : i32, own_0 : vec4<f32>) -> RowPlacement_0\n{\n var p_0 : RowPlacement_0;\n p_0.hidden_0 = false;\n p_0.slot_0 = key_2;\n p_0.color_0 = own_0;\n if(keys_4 < i32(0))\n {\n return p_0;\n }\n var n_0 : u32 = u32(keys_4);\n if(key_2 >= n_0)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n var h_0 : u32 = rowTablePlaneHeight_0(n_0);\n var _S11 : u32 = rowTableTexelX_0(key_2, n_0);\n var u_2 : f32 = (f32(_S11) + 0.5f) / f32(rowTableWidth_0(n_0));\n var rows_0 : f32 = f32(u32(2) * h_0);\n var y_0 : u32 = rowTableTexelY_0(key_2, n_0);\n var _S12 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0) + 0.5f) / rows_0)), (0.0f)));\n if((_S12.w) < 0.5f)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_0 = ((((byteOf_0(_S12.x)) | ((((byteOf_0(_S12.y)) << (u32(8))))))) | ((((byteOf_0(_S12.z)) << (u32(16))))));\n var _S13 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0 + h_0) + 0.5f) / rows_0)), (0.0f)));\n var _S14 : vec4<f32>;\n if((_S13.w) > 0.0f)\n {\n _S14 = _S13;\n }\n else\n {\n _S14 = own_0;\n }\n p_0.color_0 = _S14;\n return p_0;\n}\n\nfn hpSplitUint_0( value_1 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_1 & (u32(4095)));\n return vec2<f32>(f32(value_1 - lo_0), f32(lo_0));\n}\n\nfn hpToClipX_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_0 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_0;\n var step_0 : f32 = 2.0f / bpRange_0.z;\n return dot(vec3<f32>(-1.0f, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3<f32>(1.0f, step_0, step_0));\n}\n\nfn rowBandTopPx_0( rowOffsetPx_1 : f32, rowHeight_1 : f32, slot_1 : u32) -> f32\n{\n return rowOffsetPx_1 + rowHeight_1 * f32(slot_1);\n}\n\nfn valueToYPxScaled_0( value_2 : f32, domainMin_3 : f32, domainMax_3 : f32, h_1 : f32, scaleType_2 : i32, symlogConstant_2 : f32) -> f32\n{\n return (1.0f - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_1;\n}\n\nfn lineValueYPx_0( _S15 : f32, _S16 : f32) -> f32\n{\n return _S16 + valueToYPxScaled_0(_S15, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\nfn neighbourYPx_0( neighbour_0 : f32, bandTop_0 : f32) -> f32\n{\n var _S17 : f32;\n if(neighbour_0 < -1.50000000274887788e+38f)\n {\n _S17 = u_0.origin_0;\n }\n else\n {\n _S17 = neighbour_0;\n }\n return lineValueYPx_0(_S17, bandTop_0);\n}\n\nfn pxToClipLen_0( px_0 : f32, size_0 : f32) -> f32\n{\n return px_0 * 2.0f / size_0;\n}\n\nfn quadLocal_0( vid_0 : u32) -> vec2<f32>\n{\n var v_0 : u32 = vid_0 % u32(6);\n var _S18 : bool = v_0 == u32(0);\n var _S19 : bool;\n if(_S18)\n {\n _S19 = true;\n }\n else\n {\n _S19 = v_0 == u32(2);\n }\n if(_S19)\n {\n _S19 = true;\n }\n else\n {\n _S19 = v_0 == u32(3);\n }\n var _S20 : f32;\n if(_S19)\n {\n _S20 = 0.0f;\n }\n else\n {\n _S20 = 1.0f;\n }\n if(_S18)\n {\n _S19 = true;\n }\n else\n {\n _S19 = v_0 == u32(1);\n }\n if(_S19)\n {\n _S19 = true;\n }\n else\n {\n _S19 = v_0 == u32(4);\n }\n var _S21 : f32;\n if(_S19)\n {\n _S21 = 0.0f;\n }\n else\n {\n _S21 = 1.0f;\n }\n return vec2<f32>(_S20, _S21);\n}\n\nfn yPxToClipY_0( yPx_0 : f32, canvasHeight_1 : f32) -> f32\n{\n return 1.0f - yPx_0 / canvasHeight_1 * 2.0f;\n}\n\nstruct VsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @interpolate(flat) @location(0) color_1 : vec4<f32>,\n @interpolate(flat) @location(4) colorLine_0 : vec2<f32>,\n @interpolate(flat) @location(1) cutYsLo_0 : vec4<f32>,\n @interpolate(flat) @location(2) cutYsHi_0 : vec4<f32>,\n @location(3) yPx_1 : f32,\n};\n\nstruct vertexInput_0\n{\n @location(0) x_2 : u32,\n @location(1) x2_0 : u32,\n @location(2) y_1 : f32,\n @location(3) color_2 : u32,\n @location(4) row_0 : u32,\n @location(5) prevY_0 : f32,\n @location(6) nextY_0 : f32,\n};\n\nfn markScaleColor_0( _S22 : texture_2d<f32>, _S23 : sampler, _S24 : u32, _S25 : i32, _S26 : f32, _S27 : f32, _S28 : f32, _S29 : i32, _S30 : vec4<f32>, _S31 : vec4<f32>) -> vec4<f32>\n{\n if(_S25 == i32(0))\n {\n return unpackRGBA_0(_S24);\n }\n if(_S24 == u32(2143289345))\n {\n return unpackRGBA_0(u32(4289703855));\n }\n var scaleType_3 : i32;\n if(((_S24 & (u32(2139095040)))) == u32(2139095040))\n {\n if(((_S24 & (u32(8388607)))) != u32(0))\n {\n return unpackRGBA_0(u32(4286611584));\n }\n var negative_0 : bool = ((_S24 & (u32(2147483648)))) != u32(0);\n if(_S25 == i32(3))\n {\n if(negative_0)\n {\n scaleType_3 = i32(0);\n }\n else\n {\n scaleType_3 = _S29;\n }\n return u_0.colorBands_0[scaleType_3];\n }\n var _S32 : f32;\n if(negative_0)\n {\n _S32 = 0.0f;\n }\n else\n {\n _S32 = 1.0f;\n }\n return rampColor_0(_S22, _S23, rampMidT_0(_S32, _S28));\n }\n var value_3 : f32 = (bitcast<f32>((_S24)));\n if(_S25 == i32(3))\n {\n return u_0.colorBands_0[thresholdBand_0(value_3, _S29, _S30, _S31)];\n }\n if(_S25 == i32(2))\n {\n scaleType_3 = i32(1);\n }\n else\n {\n scaleType_3 = i32(0);\n }\n return rampColor_0(_S22, _S23, rampMidT_0(normalizeScore_0(value_3, _S26, _S27, scaleType_3, 1.0f), _S28));\n}\n\nfn lineBpToClipX_0( _S33 : u32) -> f32\n{\n return hpToClipX_0(hpSplitUint_0(_S33), u_0.bpRangeX_0, u_0.zero_0);\n}\n\nfn lineColorYPx_0( _S34 : f32, _S35 : f32) -> f32\n{\n return _S35 + (1.0f - normalizeScoreUnclamped_0(_S34, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\nfn lineCutYsPx_0( _S36 : i32, _S37 : f32) -> vec4<f32>\n{\n var ys_0 : vec4<f32> = vec4<f32>(0.0f);\n var k_0 : i32 = i32(0);\n for(;;)\n {\n if(k_0 < i32(4))\n {\n }\n else\n {\n break;\n }\n var _S38 : i32 = _S36 + k_0;\n if(_S38 < (u_0.colorCutCount_0))\n {\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S38, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]), _S37);\n }\n k_0 = k_0 + i32(1);\n }\n return ys_0;\n}\n\n@vertex\nfn vs_main( _S39 : vertexInput_0, @builtin(vertex_index) vid_1 : u32) -> VsOut_0\n{\n var o_0 : VsOut_0;\n var _S40 : RowPlacement_0 = rowTableLookup_0(rowTable_texture_0, rowTable_sampler_0, _S39.row_0, u_0.rowTableKeys_0, markScaleColor_0(colorRamp_texture_0, colorRamp_sampler_0, _S39.color_2, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]));\n if(_S40.hidden_0)\n {\n o_0.position_0 = vec4<f32>(2.0f, 2.0f, 0.0f, 1.0f);\n var _S41 : vec4<f32> = vec4<f32>(0.0f);\n o_0.color_1 = _S41;\n o_0.colorLine_0 = vec2<f32>(0.0f);\n o_0.cutYsLo_0 = _S41;\n o_0.cutYsHi_0 = _S41;\n o_0.yPx_1 = 0.0f;\n return o_0;\n }\n var _S42 : f32 = lineBpToClipX_0(_S39.x_2);\n var _S43 : f32 = lineBpToClipX_0(_S39.x2_0);\n var bandTop_1 : f32 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S40.slot_0);\n var _S44 : f32 = lineValueYPx_0(_S39.y_1, bandTop_1);\n var prevPx_0 : f32 = neighbourYPx_0(_S39.prevY_0, bandTop_1);\n var nextPx_0 : f32 = neighbourYPx_0(_S39.nextY_0, bandTop_1);\n var hw_0 : f32 = u_0.lineWidth_0 * 0.5f;\n var hwx_0 : f32 = pxToClipLen_0(hw_0, u_0.viewportWidth_0);\n var seg_0 : u32 = vid_1 / u32(6);\n var q_0 : vec2<f32> = quadLocal_0(vid_1);\n var sx_0 : f32;\n var sy_0 : f32;\n var colorLine_1 : vec2<f32>;\n if(seg_0 == u32(0))\n {\n var _S45 : f32 = max(prevPx_0, _S44);\n var _S46 : f32 = min(prevPx_0, _S44);\n var _S47 : f32 = mix(_S45 + hw_0, _S46 - hw_0, q_0.y);\n var _S48 : vec2<f32> = vec2<f32>(_S46, _S45);\n sx_0 = mix(_S42 - hwx_0, _S42 + hwx_0, q_0.x);\n sy_0 = _S47;\n colorLine_1 = _S48;\n }\n else\n {\n if(seg_0 == u32(1))\n {\n var _S49 : f32 = mix(_S44 + hw_0, _S44 - hw_0, q_0.y);\n var _S50 : f32 = lineColorYPx_0(_S39.y_1, bandTop_1);\n var _S51 : vec2<f32> = vec2<f32>(_S50, _S50);\n sx_0 = mix(min(_S42, _S43) - hwx_0, max(_S42, _S43) + hwx_0, q_0.x);\n sy_0 = _S49;\n colorLine_1 = _S51;\n }\n else\n {\n var _S52 : f32 = max(_S44, nextPx_0);\n var _S53 : f32 = min(_S44, nextPx_0);\n var _S54 : f32 = mix(_S52 + hw_0, _S53 - hw_0, q_0.y);\n var _S55 : vec2<f32> = vec2<f32>(_S53, _S52);\n sx_0 = mix(_S43 - hwx_0, _S43 + hwx_0, q_0.x);\n sy_0 = _S54;\n colorLine_1 = _S55;\n }\n }\n o_0.position_0 = vec4<f32>(sx_0, yPxToClipY_0(sy_0, u_0.canvasHeight_0), 0.0f, 1.0f);\n o_0.color_1 = _S40.color_0;\n o_0.colorLine_0 = colorLine_1;\n o_0.cutYsLo_0 = lineCutYsPx_0(i32(0), bandTop_1);\n o_0.cutYsHi_0 = lineCutYsPx_0(i32(4), bandTop_1);\n o_0.yPx_1 = sy_0;\n return o_0;\n}\n\nfn thresholdBandAtYPx_0( yPx_2 : f32, cutCount_1 : i32, cutYsLo_1 : vec4<f32>, cutYsHi_1 : vec4<f32>) -> i32\n{\n var band_1 : i32 = i32(0);\n var i_2 : i32 = i32(0);\n for(;;)\n {\n if(i_2 < cutCount_1)\n {\n }\n else\n {\n break;\n }\n if(yPx_2 <= (colorCutAt_0(i_2, cutYsLo_1, cutYsHi_1)))\n {\n band_1 = i_2 + i32(1);\n }\n i_2 = i_2 + i32(1);\n }\n return band_1;\n}\n\nstruct pixelOutput_0\n{\n @location(0) output_0 : vec4<f32>,\n};\n\nstruct pixelInput_0\n{\n @interpolate(flat) @location(0) color_3 : vec4<f32>,\n @interpolate(flat) @location(4) colorLine_2 : vec2<f32>,\n @interpolate(flat) @location(1) cutYsLo_2 : vec4<f32>,\n @interpolate(flat) @location(2) cutYsHi_2 : vec4<f32>,\n @location(3) yPx_3 : f32,\n};\n\nfn lineFragmentColor_0( _S56 : f32, _S57 : vec4<f32>, _S58 : vec4<f32>, _S59 : vec4<f32>) -> vec4<f32>\n{\n if((u_0.rampMode_0) != i32(3))\n {\n return _S59;\n }\n return u_0.colorBands_0[thresholdBandAtYPx_0(_S56, u_0.colorCutCount_0, _S57, _S58)];\n}\n\n@fragment\nfn fs_main( _S60 : pixelInput_0, @builtin(position) position_1 : vec4<f32>) -> pixelOutput_0\n{\n var _S61 : pixelOutput_0 = pixelOutput_0( lineFragmentColor_0(clamp(_S60.yPx_3, _S60.colorLine_2.x, _S60.colorLine_2.y), _S60.cutYsLo_2, _S60.cutYsHi_2, _S60.color_3) );\n return _S61;\n}\n\n";
|
|
3
|
+
export const WGSL_SOURCE = "struct Uniforms_std140_0\n{\n @align(16) bpRangeX_0 : vec3<f32>,\n @align(4) canvasHeight_0 : f32,\n @align(16) domainMin_0 : f32,\n @align(4) domainMax_0 : f32,\n @align(8) valueScaleType_0 : i32,\n @align(4) valueSymlogConstant_0 : f32,\n @align(16) rampMode_0 : i32,\n @align(4) rampMin_0 : f32,\n @align(8) rampMax_0 : f32,\n @align(4) rampMidNorm_0 : f32,\n @align(16) colorCutCount_0 : i32,\n @align(16) colorCuts_0 : array<vec4<f32>, i32(2)>,\n @align(16) colorBands_0 : array<vec4<f32>, i32(9)>,\n @align(16) colorFromY_0 : i32,\n @align(4) rowHeight_0 : f32,\n @align(8) rowBandPx_0 : f32,\n @align(4) rowOffsetPx_0 : f32,\n @align(16) origin_0 : f32,\n @align(4) lineWidth_0 : f32,\n @align(8) zero_0 : f32,\n @align(4) viewportWidth_0 : f32,\n @align(16) devicePixelRatio_0 : f32,\n @align(4) rowTableKeys_0 : i32,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : Uniforms_std140_0;\n@binding(2) @group(0) var colorRamp_texture_0 : texture_2d<f32>;\n\n@binding(3) @group(0) var colorRamp_sampler_0 : sampler;\n\n@binding(4) @group(0) var rowTable_texture_0 : texture_2d<f32>;\n\n@binding(5) @group(0) var rowTable_sampler_0 : sampler;\n\nfn unpackRGBA_0( c_0 : u32) -> vec4<f32>\n{\n return vec4<f32>(f32((((c_0 >> (u32(0)))) & (u32(255)))), f32((((c_0 >> (u32(8)))) & (u32(255)))), f32((((c_0 >> (u32(16)))) & (u32(255)))), f32((((c_0 >> (u32(24)))) & (u32(255))))) / vec4<f32>(255.0f);\n}\n\nfn rampMidT_0( t_0 : f32, mid_0 : f32) -> f32\n{\n var _S1 : f32 = max(mid_0, 1.0f - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0f * _S1), 0.0f, 1.0f);\n}\n\nfn rampColor_0( ramp_texture_0 : texture_2d<f32>, ramp_sampler_0 : sampler, t_1 : f32) -> vec4<f32>\n{\n return (textureSampleLevel((ramp_texture_0), (ramp_sampler_0), (vec2<f32>((clamp(t_1, 0.0f, 1.0f) * 255.0f + 0.5f) / 256.0f, 0.5f)), (0.0f)));\n}\n\nfn colorCutAt_0( i_0 : i32, cutsLo_0 : vec4<f32>, cutsHi_0 : vec4<f32>) -> f32\n{\n var _S2 : f32;\n if(i_0 < i32(4))\n {\n _S2 = cutsLo_0[i_0];\n }\n else\n {\n _S2 = cutsHi_0[i_0 - i32(4)];\n }\n return _S2;\n}\n\nfn thresholdBand_0( value_0 : f32, cutCount_0 : i32, cutsLo_1 : vec4<f32>, cutsHi_1 : vec4<f32>) -> i32\n{\n var band_0 : i32 = i32(0);\n var i_1 : i32 = i32(0);\n for(;;)\n {\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n break;\n }\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n band_0 = i_1 + i32(1);\n }\n i_1 = i_1 + i32(1);\n }\n return band_0;\n}\n\nfn log1pf_0( x_0 : f32) -> f32\n{\n var u_1 : f32 = 1.0f + x_0;\n var _S3 : f32;\n if(u_1 == 1.0f)\n {\n _S3 = x_0;\n }\n else\n {\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0f));\n }\n return _S3;\n}\n\nfn symlogTransform_0( x_1 : f32, c_1 : f32) -> f32\n{\n return f32((i32(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\nfn normalizeScoreUnclamped_0( score_0 : f32, domainMin_1 : f32, domainMax_1 : f32, scaleType_0 : i32, symlogConstant_0 : f32) -> f32\n{\n var tMax_0 : f32;\n var tMin_0 : f32;\n var t_2 : f32;\n if(scaleType_0 == i32(2))\n {\n var _S4 : f32 = symlogTransform_0(score_0, symlogConstant_0);\n var _S5 : f32 = symlogTransform_0(domainMin_1, symlogConstant_0);\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n tMin_0 = _S5;\n t_2 = _S4;\n }\n else\n {\n if(scaleType_0 == i32(1))\n {\n if(domainMin_1 > 0.0f)\n {\n tMax_0 = domainMin_1;\n }\n else\n {\n tMax_0 = 1.0f;\n }\n var _S6 : f32 = log2(max(score_0, tMax_0));\n var _S7 : f32 = log2(tMax_0);\n tMax_0 = log2(max(domainMax_1, tMax_0));\n tMin_0 = _S7;\n t_2 = _S6;\n }\n else\n {\n tMax_0 = domainMax_1;\n tMin_0 = domainMin_1;\n t_2 = score_0;\n }\n }\n var tRange_0 : f32 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0f)\n {\n if(t_2 > tMin_0)\n {\n tMax_0 = 1.0f;\n }\n else\n {\n tMax_0 = 0.0f;\n }\n return tMax_0;\n }\n return (t_2 - tMin_0) / tRange_0;\n}\n\nfn normalizeScore_0( score_1 : f32, domainMin_2 : f32, domainMax_2 : f32, scaleType_1 : i32, symlogConstant_1 : f32) -> f32\n{\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0f, 1.0f);\n}\n\nfn rowTableWidth_0( keys_0 : u32) -> u32\n{\n return max(min(keys_0, u32(2048)), u32(1));\n}\n\nfn rowTablePlaneHeight_0( keys_1 : u32) -> u32\n{\n var w_0 : u32 = rowTableWidth_0(keys_1);\n var _S8 : u32 = (keys_1 + w_0 - u32(1)) / w_0;\n return max(_S8, u32(1));\n}\n\nfn rowTableTexelX_0( key_0 : u32, keys_2 : u32) -> u32\n{\n var _S9 : u32 = key_0 % rowTableWidth_0(keys_2);\n return _S9;\n}\n\nfn rowTableTexelY_0( key_1 : u32, keys_3 : u32) -> u32\n{\n var _S10 : u32 = key_1 / rowTableWidth_0(keys_3);\n return _S10;\n}\n\nfn byteOf_0( channel_0 : f32) -> u32\n{\n return u32(channel_0 * 255.0f + 0.5f);\n}\n\nstruct RowPlacement_0\n{\n hidden_0 : bool,\n slot_0 : u32,\n color_0 : vec4<f32>,\n overridden_0 : bool,\n};\n\nfn rowTableLookup_0( table_texture_0 : texture_2d<f32>, table_sampler_0 : sampler, key_2 : u32, keys_4 : i32, own_0 : vec4<f32>) -> RowPlacement_0\n{\n var p_0 : RowPlacement_0;\n p_0.hidden_0 = false;\n p_0.slot_0 = key_2;\n p_0.color_0 = own_0;\n p_0.overridden_0 = false;\n if(keys_4 < i32(0))\n {\n return p_0;\n }\n var n_0 : u32 = u32(keys_4);\n if(key_2 >= n_0)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n var h_0 : u32 = rowTablePlaneHeight_0(n_0);\n var _S11 : u32 = rowTableTexelX_0(key_2, n_0);\n var u_2 : f32 = (f32(_S11) + 0.5f) / f32(rowTableWidth_0(n_0));\n var rows_0 : f32 = f32(u32(2) * h_0);\n var y_0 : u32 = rowTableTexelY_0(key_2, n_0);\n var _S12 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0) + 0.5f) / rows_0)), (0.0f)));\n if((_S12.w) < 0.5f)\n {\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_0 = ((((byteOf_0(_S12.x)) | ((((byteOf_0(_S12.y)) << (u32(8))))))) | ((((byteOf_0(_S12.z)) << (u32(16))))));\n var _S13 : vec4<f32> = (textureSampleLevel((table_texture_0), (table_sampler_0), (vec2<f32>(u_2, (f32(y_0 + h_0) + 0.5f) / rows_0)), (0.0f)));\n var _S14 : bool = (_S13.w) > 0.0f;\n p_0.overridden_0 = _S14;\n var _S15 : vec4<f32>;\n if(_S14)\n {\n _S15 = _S13;\n }\n else\n {\n _S15 = own_0;\n }\n p_0.color_0 = _S15;\n return p_0;\n}\n\nfn hpSplitUint_0( value_1 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_1 & (u32(4095)));\n return vec2<f32>(f32(value_1 - lo_0), f32(lo_0));\n}\n\nfn hpToClipX_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_0 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_0;\n var step_0 : f32 = 2.0f / bpRange_0.z;\n return dot(vec3<f32>(-1.0f, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3<f32>(1.0f, step_0, step_0));\n}\n\nfn rowBandTopPx_0( rowOffsetPx_1 : f32, rowHeight_1 : f32, slot_1 : u32) -> f32\n{\n return rowOffsetPx_1 + rowHeight_1 * f32(slot_1);\n}\n\nfn valueToYPxScaled_0( value_2 : f32, domainMin_3 : f32, domainMax_3 : f32, h_1 : f32, scaleType_2 : i32, symlogConstant_2 : f32) -> f32\n{\n return (1.0f - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_1;\n}\n\nfn lineValueYPx_0( _S16 : f32, _S17 : f32) -> f32\n{\n return _S17 + valueToYPxScaled_0(_S16, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\nfn neighbourYPx_0( neighbour_0 : f32, bandTop_0 : f32) -> f32\n{\n var _S18 : f32;\n if(neighbour_0 < -1.50000000274887788e+38f)\n {\n _S18 = u_0.origin_0;\n }\n else\n {\n _S18 = neighbour_0;\n }\n return lineValueYPx_0(_S18, bandTop_0);\n}\n\nfn pxToClipLen_0( px_0 : f32, size_0 : f32) -> f32\n{\n return px_0 * 2.0f / size_0;\n}\n\nfn quadLocal_0( vid_0 : u32) -> vec2<f32>\n{\n var v_0 : u32 = vid_0 % u32(6);\n var _S19 : bool = v_0 == u32(0);\n var _S20 : bool;\n if(_S19)\n {\n _S20 = true;\n }\n else\n {\n _S20 = v_0 == u32(2);\n }\n if(_S20)\n {\n _S20 = true;\n }\n else\n {\n _S20 = v_0 == u32(3);\n }\n var _S21 : f32;\n if(_S20)\n {\n _S21 = 0.0f;\n }\n else\n {\n _S21 = 1.0f;\n }\n if(_S19)\n {\n _S20 = true;\n }\n else\n {\n _S20 = v_0 == u32(1);\n }\n if(_S20)\n {\n _S20 = true;\n }\n else\n {\n _S20 = v_0 == u32(4);\n }\n var _S22 : f32;\n if(_S20)\n {\n _S22 = 0.0f;\n }\n else\n {\n _S22 = 1.0f;\n }\n return vec2<f32>(_S21, _S22);\n}\n\nfn yPxToClipY_0( yPx_0 : f32, canvasHeight_1 : f32) -> f32\n{\n return 1.0f - yPx_0 / canvasHeight_1 * 2.0f;\n}\n\nfn lineColorAlongY_0( rampMode_1 : i32, colorFromY_1 : i32, overridden_1 : bool) -> bool\n{\n var _S23 : bool;\n if(rampMode_1 == i32(3))\n {\n _S23 = colorFromY_1 != i32(0);\n }\n else\n {\n _S23 = false;\n }\n if(_S23)\n {\n _S23 = !overridden_1;\n }\n else\n {\n _S23 = false;\n }\n return _S23;\n}\n\nstruct VsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @interpolate(flat) @location(0) color_1 : vec4<f32>,\n @interpolate(flat) @location(5) colorLine_0 : vec2<f32>,\n @interpolate(flat) @location(1) cutYsLo_0 : vec4<f32>,\n @interpolate(flat) @location(2) cutYsHi_0 : vec4<f32>,\n @location(3) yPx_1 : f32,\n @interpolate(flat) @location(4) colorAlongY_0 : f32,\n};\n\nstruct vertexInput_0\n{\n @location(0) x_2 : u32,\n @location(1) x2_0 : u32,\n @location(2) y_1 : f32,\n @location(3) color_2 : u32,\n @location(4) row_0 : u32,\n @location(5) prevY_0 : f32,\n @location(6) nextY_0 : f32,\n};\n\nfn markScaleColor_0( _S24 : texture_2d<f32>, _S25 : sampler, _S26 : u32, _S27 : i32, _S28 : f32, _S29 : f32, _S30 : f32, _S31 : i32, _S32 : vec4<f32>, _S33 : vec4<f32>) -> vec4<f32>\n{\n if(_S27 == i32(0))\n {\n return unpackRGBA_0(_S26);\n }\n if(_S26 == u32(2143289345))\n {\n return unpackRGBA_0(u32(4289703855));\n }\n var scaleType_3 : i32;\n if(((_S26 & (u32(2139095040)))) == u32(2139095040))\n {\n if(((_S26 & (u32(8388607)))) != u32(0))\n {\n return unpackRGBA_0(u32(4286611584));\n }\n var negative_0 : bool = ((_S26 & (u32(2147483648)))) != u32(0);\n if(_S27 == i32(3))\n {\n if(negative_0)\n {\n scaleType_3 = i32(0);\n }\n else\n {\n scaleType_3 = _S31;\n }\n return u_0.colorBands_0[scaleType_3];\n }\n var _S34 : f32;\n if(negative_0)\n {\n _S34 = 0.0f;\n }\n else\n {\n _S34 = 1.0f;\n }\n return rampColor_0(_S24, _S25, rampMidT_0(_S34, _S30));\n }\n var value_3 : f32 = (bitcast<f32>((_S26)));\n if(_S27 == i32(3))\n {\n return u_0.colorBands_0[thresholdBand_0(value_3, _S31, _S32, _S33)];\n }\n if(_S27 == i32(2))\n {\n scaleType_3 = i32(1);\n }\n else\n {\n scaleType_3 = i32(0);\n }\n return rampColor_0(_S24, _S25, rampMidT_0(normalizeScore_0(value_3, _S28, _S29, scaleType_3, 1.0f), _S30));\n}\n\nfn lineBpToClipX_0( _S35 : u32) -> f32\n{\n return hpToClipX_0(hpSplitUint_0(_S35), u_0.bpRangeX_0, u_0.zero_0);\n}\n\nfn lineColorYPx_0( _S36 : f32, _S37 : f32) -> f32\n{\n return _S37 + (1.0f - normalizeScoreUnclamped_0(_S36, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\nfn lineCutYsPx_0( _S38 : i32, _S39 : f32) -> vec4<f32>\n{\n var ys_0 : vec4<f32> = vec4<f32>(0.0f);\n var k_0 : i32 = i32(0);\n for(;;)\n {\n if(k_0 < i32(4))\n {\n }\n else\n {\n break;\n }\n var _S40 : i32 = _S38 + k_0;\n if(_S40 < (u_0.colorCutCount_0))\n {\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S40, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]), _S39);\n }\n k_0 = k_0 + i32(1);\n }\n return ys_0;\n}\n\n@vertex\nfn vs_main( _S41 : vertexInput_0, @builtin(vertex_index) vid_1 : u32) -> VsOut_0\n{\n var o_0 : VsOut_0;\n var _S42 : RowPlacement_0 = rowTableLookup_0(rowTable_texture_0, rowTable_sampler_0, _S41.row_0, u_0.rowTableKeys_0, markScaleColor_0(colorRamp_texture_0, colorRamp_sampler_0, _S41.color_2, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[i32(0)], u_0.colorCuts_0[i32(1)]));\n if(_S42.hidden_0)\n {\n o_0.position_0 = vec4<f32>(2.0f, 2.0f, 0.0f, 1.0f);\n var _S43 : vec4<f32> = vec4<f32>(0.0f);\n o_0.color_1 = _S43;\n o_0.colorLine_0 = vec2<f32>(0.0f);\n o_0.cutYsLo_0 = _S43;\n o_0.cutYsHi_0 = _S43;\n o_0.colorAlongY_0 = 0.0f;\n o_0.yPx_1 = 0.0f;\n return o_0;\n }\n var _S44 : f32 = lineBpToClipX_0(_S41.x_2);\n var _S45 : f32 = lineBpToClipX_0(_S41.x2_0);\n var bandTop_1 : f32 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S42.slot_0);\n var _S46 : f32 = lineValueYPx_0(_S41.y_1, bandTop_1);\n var prevPx_0 : f32 = neighbourYPx_0(_S41.prevY_0, bandTop_1);\n var nextPx_0 : f32 = neighbourYPx_0(_S41.nextY_0, bandTop_1);\n var hw_0 : f32 = u_0.lineWidth_0 * 0.5f;\n var hwx_0 : f32 = pxToClipLen_0(hw_0, u_0.viewportWidth_0);\n var seg_0 : u32 = vid_1 / u32(6);\n var q_0 : vec2<f32> = quadLocal_0(vid_1);\n var sx_0 : f32;\n var sy_0 : f32;\n var colorLine_1 : vec2<f32>;\n if(seg_0 == u32(0))\n {\n var _S47 : f32 = max(prevPx_0, _S46);\n var _S48 : f32 = min(prevPx_0, _S46);\n var _S49 : f32 = mix(_S47 + hw_0, _S48 - hw_0, q_0.y);\n var _S50 : vec2<f32> = vec2<f32>(_S48, _S47);\n sx_0 = mix(_S44 - hwx_0, _S44 + hwx_0, q_0.x);\n sy_0 = _S49;\n colorLine_1 = _S50;\n }\n else\n {\n if(seg_0 == u32(1))\n {\n var _S51 : f32 = mix(_S46 + hw_0, _S46 - hw_0, q_0.y);\n var _S52 : f32 = lineColorYPx_0(_S41.y_1, bandTop_1);\n var _S53 : vec2<f32> = vec2<f32>(_S52, _S52);\n sx_0 = mix(min(_S44, _S45) - hwx_0, max(_S44, _S45) + hwx_0, q_0.x);\n sy_0 = _S51;\n colorLine_1 = _S53;\n }\n else\n {\n var _S54 : f32 = max(_S46, nextPx_0);\n var _S55 : f32 = min(_S46, nextPx_0);\n var _S56 : f32 = mix(_S54 + hw_0, _S55 - hw_0, q_0.y);\n var _S57 : vec2<f32> = vec2<f32>(_S55, _S54);\n sx_0 = mix(_S45 - hwx_0, _S45 + hwx_0, q_0.x);\n sy_0 = _S56;\n colorLine_1 = _S57;\n }\n }\n o_0.position_0 = vec4<f32>(sx_0, yPxToClipY_0(sy_0, u_0.canvasHeight_0), 0.0f, 1.0f);\n o_0.color_1 = _S42.color_0;\n o_0.colorLine_0 = colorLine_1;\n o_0.cutYsLo_0 = lineCutYsPx_0(i32(0), bandTop_1);\n o_0.cutYsHi_0 = lineCutYsPx_0(i32(4), bandTop_1);\n if(lineColorAlongY_0(u_0.rampMode_0, u_0.colorFromY_0, _S42.overridden_0))\n {\n sx_0 = 1.0f;\n }\n else\n {\n sx_0 = 0.0f;\n }\n o_0.colorAlongY_0 = sx_0;\n o_0.yPx_1 = sy_0;\n return o_0;\n}\n\nfn thresholdBandAtYPx_0( yPx_2 : f32, cutCount_1 : i32, cutYsLo_1 : vec4<f32>, cutYsHi_1 : vec4<f32>) -> i32\n{\n var band_1 : i32 = i32(0);\n var i_2 : i32 = i32(0);\n for(;;)\n {\n if(i_2 < cutCount_1)\n {\n }\n else\n {\n break;\n }\n if(yPx_2 <= (colorCutAt_0(i_2, cutYsLo_1, cutYsHi_1)))\n {\n band_1 = i_2 + i32(1);\n }\n i_2 = i_2 + i32(1);\n }\n return band_1;\n}\n\nstruct pixelOutput_0\n{\n @location(0) output_0 : vec4<f32>,\n};\n\nstruct pixelInput_0\n{\n @interpolate(flat) @location(0) color_3 : vec4<f32>,\n @interpolate(flat) @location(5) colorLine_2 : vec2<f32>,\n @interpolate(flat) @location(1) cutYsLo_2 : vec4<f32>,\n @interpolate(flat) @location(2) cutYsHi_2 : vec4<f32>,\n @location(3) yPx_3 : f32,\n @interpolate(flat) @location(4) colorAlongY_1 : f32,\n};\n\nfn lineFragmentColor_0( _S58 : f32, _S59 : vec4<f32>, _S60 : vec4<f32>, _S61 : vec4<f32>, _S62 : f32) -> vec4<f32>\n{\n if(_S62 < 0.5f)\n {\n return _S61;\n }\n return u_0.colorBands_0[thresholdBandAtYPx_0(_S58, u_0.colorCutCount_0, _S59, _S60)];\n}\n\n@fragment\nfn fs_main( _S63 : pixelInput_0, @builtin(position) position_1 : vec4<f32>) -> pixelOutput_0\n{\n var _S64 : pixelOutput_0 = pixelOutput_0( lineFragmentColor_0(clamp(_S63.yPx_3, _S63.colorLine_2.x, _S63.colorLine_2.y), _S63.cutYsLo_2, _S63.cutYsHi_2, _S63.color_3, _S63.colorAlongY_1) );\n return _S64;\n}\n\n";
|