|
@@ -53808,15 +53808,15 @@
|
|
|
|
|
|
},
|
|
|
|
|
|
- changeShaderToWebgl2(vs, fs, matType, otherReplaces=[]){
|
|
|
+ changeShaderToWebgl2(vs, fs, matType, otherReplaces=[]){//部分shader要根据webgl版本作更改
|
|
|
if(!Potree.settings.isWebgl2)return {vs, fs}
|
|
|
let turnTo300 = matType != 'ShaderMaterial' && (vs.includes('gl_FragDepthEXT') || fs.includes('gl_FragDepthEXT') );
|
|
|
- let addV300 = turnTo300 && matType != 'RawShaderMaterial'; //需要直接material.glslVersion = '300 es' 以加在define之前
|
|
|
+ let addV300 = turnTo300 && matType != 'RawShaderMaterial'; // RawShaderMaterial直接material.glslVersion = '300 es' 以加在define之前
|
|
|
let change = (shader, shaderType)=>{
|
|
|
let newShader = shader;
|
|
|
|
|
|
- if(turnTo300){ //需要加 #version 300 es。 shaderMaterial会自动加所以不用
|
|
|
- addV300 && (newShader = '#version 300 es \n' + newShader);
|
|
|
+ if(turnTo300){ //非shaderMaterial需要手动改为300 es的写法
|
|
|
+ addV300 && (newShader = '#version 300 es \n' + newShader); //需要加 #version 300 es。 three.js自带的渲染会自动加所以不用
|
|
|
newShader = newShader.replaceAll('varying ', shaderType == 'vs' ? 'out ' : 'in ');
|
|
|
newShader = newShader.replaceAll('attribute ', 'in ');
|
|
|
if(shaderType == 'fs'){
|
|
@@ -53844,7 +53844,7 @@
|
|
|
vs = change(vs,'vs');
|
|
|
fs = change(fs,'fs');
|
|
|
|
|
|
- console.log('成功替换为webgl2' );
|
|
|
+ //console.log('成功替换为webgl2' )
|
|
|
return {vs,fs}
|
|
|
}//three.js的shaderMaterial也有替换功能,搜 '#define gl_FragDepthEXT gl_FragDepth',
|
|
|
|
|
@@ -120789,7 +120789,10 @@ ENDSEC
|
|
|
objects.forEach(object=>{
|
|
|
boundingBox.union(object.boundingBox.clone().applyMatrix4(object.matrixWorld));
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
+ let len = boundingBox.getSize(new Vector3).length();
|
|
|
+ Potree.settings.cameraFar = Math.max( Potree.settings.cameraFar, len*3 );
|
|
|
+
|
|
|
if(fitBound){
|
|
|
viewer.focusOnObject({boundingBox}, 'boundingBox', duration, {dontLookUp, dontChangeCamDir:true});
|
|
|
}else {
|