Browse Source

renaming and bug fixes

AronKovacs 4 years ago
parent
commit
4d86c9e0ae

+ 1 - 1
src/mol-gl/renderer.ts

@@ -476,7 +476,7 @@ namespace Renderer {
             const { renderables } = group;
             for (let i = 0, il = renderables.length; i < il; ++i) {
                 const r = renderables[i];
-                if (r.values.uAlpha.ref.value < 1 || r.values.transparencyAverage.ref.value > 0 || r.values?.dRenderMode?.ref.value === 'volume') {
+                if (camera.fogNear < camera.fogFar || r.values.uAlpha.ref.value < 1 || r.values.transparencyAverage.ref.value > 0 || r.values?.dRenderMode?.ref.value === 'volume') {
                     renderObject(r, 'colorWboit');
                 }
             }

+ 21 - 19
src/mol-gl/shader/chunks/assign-material-color.glsl.ts

@@ -28,28 +28,30 @@ export default `
         if (ta < uPickingAlphaThreshold)
             discard; // ignore so the element below can be picked
     #else
-        // TODO: only needed when wboit is not available (or not selected?)
-        // float at = 0.0;
+        #if defined(dRenderVariant_colorBlended)
+            float at = 0.0;
 
-        // // shift by view-offset during multi-sample rendering to allow for blending
-        // vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25;
+            // shift by view-offset during multi-sample rendering to allow for blending
+            vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25;
 
-        // #if defined(dTransparencyVariant_single)
-        //     const mat4 thresholdMatrix = mat4(
-        //         1.0 / 17.0,  9.0 / 17.0,  3.0 / 17.0, 11.0 / 17.0,
-        //         13.0 / 17.0,  5.0 / 17.0, 15.0 / 17.0,  7.0 / 17.0,
-        //         4.0 / 17.0, 12.0 / 17.0,  2.0 / 17.0, 10.0 / 17.0,
-        //         16.0 / 17.0,  8.0 / 17.0, 14.0 / 17.0,  6.0 / 17.0
-        //     );
-        //     at = thresholdMatrix[int(intMod(coord.x, 4.0))][int(intMod(coord.y, 4.0))];
-        // #elif defined(dTransparencyVariant_multi)
-        //     at = fract(dot(vec3(coord, vGroup + 0.5), vec3(2.0, 7.0, 23.0) / 17.0f));
-        // #endif
+            #if defined(dTransparencyVariant_single)
+                const mat4 thresholdMatrix = mat4(
+                    1.0 / 17.0,  9.0 / 17.0,  3.0 / 17.0, 11.0 / 17.0,
+                    13.0 / 17.0,  5.0 / 17.0, 15.0 / 17.0,  7.0 / 17.0,
+                    4.0 / 17.0, 12.0 / 17.0,  2.0 / 17.0, 10.0 / 17.0,
+                    16.0 / 17.0,  8.0 / 17.0, 14.0 / 17.0,  6.0 / 17.0
+                );
+                at = thresholdMatrix[int(intMod(coord.x, 4.0))][int(intMod(coord.y, 4.0))];
+            #elif defined(dTransparencyVariant_multi)
+                at = fract(dot(vec3(coord, vGroup + 0.5), vec3(2.0, 7.0, 23.0) / 17.0f));
+            #endif
 
-        // if (ta < 0.99 && (ta < 0.01 || ta < at)) {
-        //     discard;
-        // }
-        material.a *= ta;
+            if (ta < 0.99 && (ta < 0.01 || ta < at)) {
+                discard;
+            }
+        #elif defined(dRenderVariant_colorWboit)
+            material.a *= ta;
+        #endif
     #endif
 #endif
 `;

+ 3 - 3
src/mol-gl/shader/chunks/wboit-write.glsl.ts

@@ -1,13 +1,13 @@
 export default `
 #if defined(dRenderVariant_colorWboit)
     if (uRenderWboit == 0) {
-        if (gl_FragColor.a != 1.0) {
+        if (gl_FragColor.a < 1.0) {
             discard;
         }
     } else if (uRenderWboit == 1) {
-        if (gl_FragColor.a != 1.0 && absFragDepth < getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {
+        if (gl_FragColor.a != 1.0 && !interior && fragmentDepth < getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {
             float alpha = gl_FragColor.a;
-            float wboitWeight = alpha * clamp(pow(1.0 - absFragDepth, 2.0), 0.01, 1.0);
+            float wboitWeight = alpha * clamp(pow(1.0 - fragmentDepth, 2.0), 0.01, 1.0);
             gl_FragColor = vec4(gl_FragColor.rgb * alpha * wboitWeight, alpha);
             gl_FragData[1] = vec4(alpha * wboitWeight);
         } else {

+ 3 - 2
src/mol-gl/shader/direct-volume.frag.ts

@@ -440,10 +440,11 @@ void main () {
 
     #if defined(dRenderVariant_color)
         #if defined(dRenderMode_isosurface) && defined(enabledFragDepth)
-            float absFragDepth = abs(gl_FragDepthEXT);
+            float fragmentDepth = gl_FragDepthEXT;
         #else
-            float absFragDepth = abs(calcDepth((uView * vec4(uCameraPosition + (d * rayDir), 1.0)).xyz));
+            float fragmentDepth = calcDepth((uView * vec4(uCameraPosition + (d * rayDir), 1.0)).xyz);
         #endif
+        interior = false;
         #include wboit_write
     #endif
 }

+ 2 - 1
src/mol-gl/shader/image.frag.ts

@@ -124,7 +124,8 @@ void main() {
         #include apply_marker_color
         #include apply_fog
 
-        float absFragDepth = abs(gl_FragCoord.z);
+        float fragmentDepth = gl_FragCoord.z;
+        bool interior = false;
         #include wboit_write
     #endif
 }

+ 2 - 1
src/mol-gl/shader/lines.frag.ts

@@ -29,7 +29,8 @@ void main(){
         #include apply_marker_color
         #include apply_fog
 
-        float absFragDepth = abs(gl_FragCoord.z);
+        float fragmentDepth = gl_FragCoord.z;
+        bool interior = false;
         #include wboit_write
     #endif
 }

+ 1 - 1
src/mol-gl/shader/mesh.frag.ts

@@ -61,7 +61,7 @@ void main() {
         #include apply_marker_color
         #include apply_fog
 
-        float absFragDepth = abs(gl_FragCoord.z);
+        float fragmentDepth = gl_FragCoord.z;
         #include wboit_write
     #endif
 }

+ 2 - 1
src/mol-gl/shader/points.frag.ts

@@ -43,7 +43,8 @@ void main(){
         #include apply_marker_color
         #include apply_fog
 
-        float absFragDepth = abs(gl_FragCoord.z);
+        float fragmentDepth = gl_FragCoord.z;
+        bool interior = false;
         #include wboit_write
     #endif
 }

+ 1 - 1
src/mol-gl/shader/spheres.frag.ts

@@ -108,7 +108,7 @@ void main(void){
         #include apply_marker_color
         #include apply_fog
 
-        float absFragDepth = abs(gl_FragDepthEXT);
+        float fragmentDepth = gl_FragDepthEXT;
         #include wboit_write
     #endif
 }

+ 2 - 1
src/mol-gl/shader/text.frag.ts

@@ -67,7 +67,8 @@ void main(){
         #include apply_marker_color
         #include apply_fog
 
-        float absFragDepth = abs(gl_FragCoord.z);
+        float fragmentDepth = gl_FragCoord.z;
+        bool interior = false;
         #include wboit_write
     #endif
 }