Forráskód Böngészése

fix: 透明度错误

xzw 2 éve
szülő
commit
08b49695a9
2 módosított fájl, 42 hozzáadás és 21 törlés
  1. 41 20
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map

+ 41 - 20
public/lib/potree/potree.js

@@ -62383,12 +62383,25 @@ void main() {
 
 	Shaders["basicTextured.fs"] = `varying vec2 vUv;
 uniform float opacity;
-uniform sampler2D map;
+ 
+uniform vec3 color;
+#ifdef HasMap
+    uniform sampler2D map;   
+#endif
 
 
 void main() {
-  vec4 texColor = texture2D(map, vUv);
-  gl_FragColor = vec4(texColor.rgb, texColor.a * opacity);
+     
+    #ifdef HasMap
+        vec4 texColor = texture2D(map, vUv);
+        gl_FragColor = texColor * vec4(color, opacity);
+    #else
+        gl_FragColor = vec4(color, opacity);
+    #endif
+ 
+  
+    //gl_FragColor = vec4(texColor.rgb, texColor.a * opacity);
+   
 }
 `;
 
@@ -115796,26 +115809,29 @@ ENDSEC
 	            //MergeEditor.updateEdgeStrength()
 	        }else {
 	            //model.traverse(e=>e.material && setOp(e, opacity))
-	            model.traverse(mesh=>{
+	            model.traverse(mesh=>{ 
 	                if(mesh.material){ 
-	                
-	                    mesh.material.opacity = opacity;
-	                    if(opacity<1){
-	                        mesh.material.transparent = true; 
-	                        if(model.isPointcloud){
-	                            mesh.changePointOpacity(opacity);  
-	                        }else {
-	                            mesh.material.opacity = opacity;
-	                        }
+	                    if(mesh.material.originOpacity == void 0 ){
+	                        mesh.material.originOpacity = mesh.material.opacity;
+	                    }
+	                    mesh.material.opacity = mesh.material.originOpacity * opacity;
+	                    
+	                    if(mesh.material.opacity<1){
+	                        mesh.material.transparent = true;  
+	                        /* if(model.isPointcloud){
+	                            mesh.changePointOpacity(realOpacity)  
+	                        }else{
+	                            mesh.material.opacity = realOpacity
+	                        } */
 	                        
 	                        mesh.renderOrder = Potree.config.renderOrders.model+1; 
-	                        mesh.material.depthWrite = false;
+	                        //mesh.material.depthWrite = false
 	                    }else {
 	                        mesh.material.transparent = false;
 	                        mesh.renderOrder = Potree.config.renderOrders.model;
-	                        mesh.material.depthWrite = true;
+	                        //mesh.material.depthWrite = true
 	                    }
-	                
+	                    mesh.material.depthWrite = mesh.material.opacity>0.3;
 	                }
 	            });
 	        }
@@ -124202,8 +124218,9 @@ ENDSEC
 	        
 	       super( Object.assign({},{ 
 	            uniforms:{
-	                map:    { type: 't',  value: o.map },
-	                opacity : {type:'f', value : o.opacity == void 0 ? 1 : o.opacity }
+	                color:  {type:'v3',   value: o.color || new Color("#FFF")} ,
+	                map:    {type: 't',    value: o.map },
+	                opacity : {type:'f',    value : o.opacity == void 0 ? 1 : o.opacity }
 	            },
 	            vertexShader: Shaders['basicTextured.vs'],   
 	            fragmentShader: Shaders['basicTextured.fs']  
@@ -124230,8 +124247,12 @@ ENDSEC
 	    
 	    set map(o){
 	        this.uniforms.map.value = o;
-	         
-	          
+	        if(o){
+	            this.defines.HasMap = '';
+	        }else {
+	            delete this.defines.HasMap;
+	        }
+	        console.log('hasMap', !!o, this.name );
 	    }
 	    get map(){
 	        return this.uniforms.map.value  

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 1 - 1
public/lib/potree/potree.js.map