From 88f1cfd8c4f272e31b0a202f7996c36693190418 Mon Sep 17 00:00:00 2001 From: Alexander Rose <alexander.rose@weirdbyte.de> Date: Sat, 30 Apr 2022 09:24:39 -0700 Subject: [PATCH] fix ignoreLight for direct-volume with webgl1 --- CHANGELOG.md | 1 + src/mol-gl/shader/direct-volume.frag.ts | 30 ++++++++++++++----------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dca28e0e6..7ee24ef46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ Note that since we don't clearly distinguish between a public and private interf - Fix ``allowTransparentBackfaces`` for per-group transparency - Fix ``FormatRegistry.isApplicable`` returning true for unregistered formats - Fix: handle building of ``GridLookup3D`` with zero cell size +- Fix ``ignoreLight`` for direct-volume rendering with webgl1 ## [v3.7.0] - 2022-04-13 diff --git a/src/mol-gl/shader/direct-volume.frag.ts b/src/mol-gl/shader/direct-volume.frag.ts index 02c5ba5a6..01e4039b3 100644 --- a/src/mol-gl/shader/direct-volume.frag.ts +++ b/src/mol-gl/shader/direct-volume.frag.ts @@ -289,20 +289,24 @@ vec4 raymarch(vec3 startLoc, vec3 step, vec3 rayDir) { material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a); #endif - if (material.a >= 0.01) { - #ifdef dPackedGroup - // compute gradient by central differences - gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a; - gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a; - gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a; - #else - gradient = cell.xyz * 2.0 - 1.0; - #endif - vec3 normal = -normalize(normalMatrix * normalize(gradient)); - #include apply_light_color - } else { + #ifdef dIgnoreLight gl_FragColor.rgb = material.rgb; - } + #else + if (material.a >= 0.01) { + #ifdef dPackedGroup + // compute gradient by central differences + gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a; + gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a; + gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a; + #else + gradient = cell.xyz * 2.0 - 1.0; + #endif + vec3 normal = -normalize(normalMatrix * normalize(gradient)); + #include apply_light_color + } else { + gl_FragColor.rgb = material.rgb; + } + #endif gl_FragColor.a = material.a * uAlpha * uTransferScale; -- GitLab