Browse Source

bug fixes

Aron Kovacs 4 years ago
parent
commit
41ff45d14c

+ 5 - 5
src/mol-canvas3d/passes/draw.ts

@@ -151,7 +151,7 @@ export class DrawPass {
         }
 
         if (!toDrawingBuffer && this.depthTargetPrimitivesTransparent) {
-            renderer.render(this.depthTargetPrimitivesTransparent, scene.primitives, camera, 'depth', true, transparentBackground, 1, null, true);
+            renderer.render(this.depthTargetPrimitivesTransparent, scene.primitives, camera, 'depth', true, transparentBackground, 1, null, false);
         }
 
         if (renderTarget !== null) {
@@ -162,20 +162,20 @@ export class DrawPass {
 
         if (helper.debug.isEnabled) {
             helper.debug.syncVisibility();
-            renderer.render(renderTarget, helper.debug.scene, camera, 'color', false, transparentBackground, 1, null, true);
+            renderer.render(renderTarget, helper.debug.scene, camera, 'color', false, transparentBackground, 1, this.depthTexturePrimitives, true);
         }
         if (helper.handle.isEnabled) {
-            renderer.render(renderTarget, helper.handle.scene, camera, 'color', false, transparentBackground, 1, null, true);
+            renderer.render(renderTarget, helper.handle.scene, camera, 'color', false, transparentBackground, 1, this.depthTexturePrimitives, true);
         }
         if (helper.camera.isEnabled) {
             helper.camera.update(camera);
-            renderer.render(renderTarget, helper.camera.scene, helper.camera.camera, 'color', false, transparentBackground, 1, null, true);
+            renderer.render(renderTarget, helper.camera.scene, helper.camera.camera, 'color', false, transparentBackground, 1, this.depthTexturePrimitives, true);
         }
 
         // do direct-volume rendering
         if (!toDrawingBuffer) {
             if (!this.packedDepth) {
-                this.depthTextureVolumes.attachFramebuffer(this.colorTarget.framebuffer, 'depth');
+                this.depthTextureVolumes.attachFramebuffer(renderTarget!.framebuffer, 'depth');
                 this.webgl.state.depthMask(true);
                 this.webgl.gl.viewport(x, y, width, height);
                 this.webgl.gl.scissor(x, y, width, height);

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

@@ -493,7 +493,7 @@ namespace Renderer {
                     for (let i = 0, il = renderables.length; i < il; ++i) {
                         const r = renderables[i];
                         if (r.state.opaque) {
-                            renderObject(r, variant, sharedTexturesList);
+                            renderObject(r, variant, localSharedTexturesList);
                         }
                     }
     
@@ -502,13 +502,13 @@ namespace Renderer {
                     for (let i = 0, il = renderables.length; i < il; ++i) {
                         const r = renderables[i];
                         if (!r.state.opaque && r.state.writeDepth) {
-                            renderObject(r, variant, sharedTexturesList);
+                            renderObject(r, variant, localSharedTexturesList);
                         }
                     }
                     for (let i = 0, il = renderables.length; i < il; ++i) {
                         const r = renderables[i];
                         if (!r.state.opaque && !r.state.writeDepth) {
-                            renderObject(r, variant, sharedTexturesList);
+                            renderObject(r, variant, localSharedTexturesList);
                         }
                     }
                 }
@@ -516,7 +516,7 @@ namespace Renderer {
                 if (!renderTransparent) {
                     for (let i = 0, il = renderables.length; i < il; ++i) {
                         if (!renderables[i].state.colorOnly) {
-                            renderObject(renderables[i], variant, sharedTexturesList);
+                            renderObject(renderables[i], variant, localSharedTexturesList);
                         }
                     }
                 }

+ 1 - 1
src/mol-gl/shader/chunks/wboit-params.glsl.ts

@@ -1,6 +1,6 @@
 export default `
 #if defined(dRenderVariant_color)
-#if !defined(dRenderMode_volume)
+#if !defined(dRenderMode_volume) && !defined(dRenderMode_isosurface)
     uniform sampler2D tDepth;
     
     float getDepth(const in vec2 coords) {

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

@@ -4,7 +4,7 @@ if (uRenderWboit == 0) {
         discard;
     }
 } else if (uRenderWboit == 1) {
-    if (gl_FragColor.a != 1.0 && abs(calcDepth(vViewPosition) + 0.01) < getDepth(gl_FragCoord.xy / uViewport.zw)) {
+    if (gl_FragColor.a != 1.0 && absFragDepth < getDepth(gl_FragCoord.xy / uViewport.zw)) {
         float alpha = gl_FragColor.a;
         float wboitWeight = alpha * clamp(pow(1.0 - absFragDepth, 2.0), 0.01, 1.0);
         gl_FragColor = vec4(gl_FragColor.rgb * alpha * wboitWeight, alpha);

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

@@ -403,8 +403,7 @@ void main () {
     #endif
 
     #if defined(dRenderVariant_color)
-        vec3 vViewPosition = vOrigPos;
-        float absFragDepth = abs(calcDepth(vViewPosition));
+        float absFragDepth = abs(calcDepth(vBoundingSphere.xyz));
         #include wboit_write
     #endif
 }