|
@@ -523,12 +523,12 @@ b,c,d){var e=[];e.loadCount=0;var f=new THREE.CompressedTexture;f.image=e;void 0
|
|
|
k,!0);l.responseType="arraybuffer";l.send(null)}else l=new XMLHttpRequest,l.onload=function(){var a=THREE.ImageUtils.parseDDS(l.response,!0);if(a.isCubemap){for(var b=a.mipmaps.length/a.mipmapCount,d=0;d<b;d++){e[d]={mipmaps:[]};for(var g=0;g<a.mipmapCount;g++)e[d].mipmaps.push(a.mipmaps[d*a.mipmapCount+g]),e[d].format=a.format,e[d].width=a.width,e[d].height=a.height}f.format=a.format;f.needsUpdate=!0;c&&c(f)}},l.onerror=d,l.open("GET",a,!0),l.responseType="arraybuffer",l.send(null);return f},decodeTGA:function(a){19>
|
|
|
a.length&&console.error("ImageUtils::decodeTGA()- Not enough data to contain header.");var b=new Uint8Array(a),c=0,d={id_length:b[c++],colormap_type:b[c++],image_type:b[c++],colormap_index:b[c++]|b[c++]<<8,colormap_length:b[c++]|b[c++]<<8,colormap_size:b[c++],origin:[b[c++]|b[c++]<<8,b[c++]|b[c++]<<8],width:b[c++]|b[c++]<<8,height:b[c++]|b[c++]<<8,pixel_size:b[c++],flags:b[c++]};(function(a){switch(a.image_type){case 1:case 9:(256<a.colormap_length||24!==a.colormap_size||1!==a.colormap_type)&&console.error("Targa::tgaCheckHeader() - Invalid type colormap data for indexed type");
|
|
|
break;case 2:case 3:case 10:case 11:a.colormap_type&&console.error("ImageUtils::tgaCheckHeader() - Invalid type colormap data for colormap type");break;case 0:console.error("ImageUtils::tgaCheckHeader() - No data");default:console.error('ImageUtils::tgaCheckHeader() - Invalid type " '+a.image_type+'"')}(0>=a.width||0>=a.height)&&console.error("ImageUtils::tgaCheckHeader() - Invalid image size");8!==a.pixel_size&&16!==a.pixel_size&&24!==a.pixel_size&&32!==a.pixel_size&&console.error('ImageUtils::tgaCheckHeader() - Invalid pixel size "'+
|
|
|
-a.pixel_size+'"')})(d);d.id_length+c>a.length&&console.error("ImageUtils::load() - No data");var c=c+d.id_length,e=a=!1,f=!1;switch(d.image_type){case 9:e=a=!0;break;case 1:e=!0;break;case 10:a=!0;break;case 11:f=a=!0;break;case 3:f=!0}b=function(a,b,c,d,e){var f,r,u;f=c.pixel_size>>3;r=c.width*c.height*f;b&&(u=e.subarray(d,d+=3*c.colormap_length));if(a){a=new Uint8Array(r);var q;c=0;for(var n=new Uint8Array(f);c<r;)if(q=e[d++],b=(q&127)+1,q&128){for(q=0;q<f;++q)n[q]=e[d++];for(q=0;q<b;++q)a.set(n,
|
|
|
-c+q*f);c+=f*b}else{b*=f;for(q=0;q<b;++q)a[c+q]=e[d++];c+=b}}else a=e.subarray(d,d+(b?c.width*c.height:r));return{pixel_data:a,palettes:u}}(a,e,d,c,b);b=function(a,b,c,e){var p,s,r,u,q,n=new Uint8Array(a*b*4);switch((d.flags&48)>>4){default:case 2:p=0;s=1;u=a;a=0;r=1;q=b;break;case 0:p=0;s=1;u=a;a=b-1;q=r=-1;break;case 3:p=a-1;u=s=-1;a=0;r=1;q=b;break;case 1:p=a-1,u=s=-1,a=b-1,q=r=-1}if(f)switch(d.pixel_size){case 8:e=r;b=q;q=0;var t,w;r=d.width;for(w=a;w!==b;w+=e)for(t=p;t!==u;t+=s,q++)a=c[q],n[4*
|
|
|
-(t+r*w)+0]=a,n[4*(t+r*w)+1]=a,n[4*(t+r*w)+2]=a,n[4*(t+r*w)+3]=255;break;case 16:e=r;b=q;q=0;r=d.width;for(t=a;t!==b;t+=e)for(a=p;a!==u;a+=s,q+=2)n[4*(a+r*t)+0]=c[q+0],n[4*(a+r*t)+1]=c[q+0],n[4*(a+r*t)+2]=c[q+0],n[4*(a+r*t)+3]=c[q+1];break;default:console.error("ImageUtils::getTgaRGBA() - not support this format")}else switch(d.pixel_size){case 8:b=r;r=0;var v;t=d.width;for(v=a;v!==q;v+=b)for(w=p;w!==u;w+=s,r++)a=c[r],n[4*(w+t*v)+3]=255,n[4*(w+t*v)+2]=e[3*a+0],n[4*(w+t*v)+1]=e[3*a+1],n[4*(w+t*v)+0]=
|
|
|
-e[3*a+2];break;case 16:e=r;b=q;q=0;r=d.width;for(w=a;w!==b;w+=e)for(t=p;t!==u;t+=s,q+=2)a=c[q+0]+(c[q+1]<<8),n[4*(t+r*w)+0]=(a&31744)>>7,n[4*(t+r*w)+1]=(a&992)>>2,n[4*(t+r*w)+2]=(a&31)>>3,n[4*(t+r*w)+3]=a&32768?0:255;break;case 24:e=r;b=q;q=0;r=d.width;for(t=a;t!==b;t+=e)for(a=p;a!==u;a+=s,q+=3)n[4*(a+r*t)+3]=255,n[4*(a+r*t)+2]=c[q+0],n[4*(a+r*t)+1]=c[q+1],n[4*(a+r*t)+0]=c[q+2];break;case 32:e=r;b=q;q=0;r=d.width;for(t=a;t!==b;t+=e)for(a=p;a!==u;a+=s,q+=4)n[4*(a+r*t)+2]=c[q+0],n[4*(a+r*t)+1]=c[q+
|
|
|
-1],n[4*(a+r*t)+0]=c[q+2],n[4*(a+r*t)+3]=c[q+3];break;default:console.error("ImageUtils::getTgaRGBA() - not support this format")}return n}(d.width,d.height,b.pixel_data,b.palettes);return{width:d.width,height:d.height,data:b}},loadTGATexture:function(a,b,c,d){var e=new THREE.TGATexture;b=new XMLHttpRequest;b.open("GET",a,!0);b.responseType="arraybuffer";b.onload=function(){if(200===this.status){var b=THREE.ImageUtils.decodeTGA(this.response);if(b)return e.image=b,e.sourceFile=a,e.needsUpdate=!0,e}};
|
|
|
-b.addEventListener("load",function(a){c&&c(e)},!1);b.addEventListener("error",function(a){d&&d(a)},!1);b.send(null);e.sourceFile=a;return e},loadDDSTexture:function(a,b,c,d){var e=[];e.loadCount=0;var f=new THREE.CompressedTexture;f.image=e;void 0!==b&&(f.mapping=b);f.flipY=!1;f.generateMipmaps=!1;var g=new XMLHttpRequest;g.onload=function(){var a=THREE.ImageUtils.parseDDS(g.response,!0);if(a.isCubemap)for(var b=a.mipmaps.length/a.mipmapCount,d=0;d<b;d++){e[d]={mipmaps:[]};for(var p=0;p<a.mipmapCount;p++)e[d].mipmaps.push(a.mipmaps[d*
|
|
|
+a.pixel_size+'"')})(d);d.id_length+c>a.length&&console.error("ImageUtils::load() - No data");var c=c+d.id_length,e=a=!1,f=!1;switch(d.image_type){case 9:e=a=!0;break;case 1:e=!0;break;case 10:a=!0;break;case 11:f=a=!0;break;case 3:f=!0}b=function(a,b,c,d,e){var f,r,u;f=c.pixel_size>>3;r=c.width*c.height*f;b&&(u=e.subarray(d,d+=c.colormap_length*(c.colormap_size>>3)));if(a){a=new Uint8Array(r);var q;c=0;for(var n=new Uint8Array(f);c<r;)if(q=e[d++],b=(q&127)+1,q&128){for(q=0;q<f;++q)n[q]=e[d++];for(q=
|
|
|
+0;q<b;++q)a.set(n,c+q*f);c+=f*b}else{b*=f;for(q=0;q<b;++q)a[c+q]=e[d++];c+=b}}else a=e.subarray(d,d+(b?c.width*c.height:r));return{pixel_data:a,palettes:u}}(a,e,d,c,b);b=function(a,b,c,e){var p,s,r,u,q,n=new Uint8Array(a*b*4);switch((d.flags&48)>>4){default:case 2:p=0;s=1;u=a;a=0;r=1;q=b;break;case 0:p=0;s=1;u=a;a=b-1;q=r=-1;break;case 3:p=a-1;u=s=-1;a=0;r=1;q=b;break;case 1:p=a-1,u=s=-1,a=b-1,q=r=-1}if(f)switch(d.pixel_size){case 8:e=r;b=q;q=0;var t,w;r=d.width;for(w=a;w!==b;w+=e)for(t=p;t!==u;t+=
|
|
|
+s,q++)a=c[q],n[4*(t+r*w)+0]=a,n[4*(t+r*w)+1]=a,n[4*(t+r*w)+2]=a,n[4*(t+r*w)+3]=255;break;case 16:e=r;b=q;q=0;r=d.width;for(t=a;t!==b;t+=e)for(a=p;a!==u;a+=s,q+=2)n[4*(a+r*t)+0]=c[q+0],n[4*(a+r*t)+1]=c[q+0],n[4*(a+r*t)+2]=c[q+0],n[4*(a+r*t)+3]=c[q+1];break;default:console.error("ImageUtils::getTgaRGBA() - not support this format")}else switch(d.pixel_size){case 8:b=r;r=0;var v;t=d.width;for(v=a;v!==q;v+=b)for(w=p;w!==u;w+=s,r++)a=c[r],n[4*(w+t*v)+3]=255,n[4*(w+t*v)+2]=e[3*a+0],n[4*(w+t*v)+1]=e[3*a+
|
|
|
+1],n[4*(w+t*v)+0]=e[3*a+2];break;case 16:e=r;b=q;q=0;r=d.width;for(w=a;w!==b;w+=e)for(t=p;t!==u;t+=s,q+=2)a=c[q+0]+(c[q+1]<<8),n[4*(t+r*w)+0]=(a&31744)>>7,n[4*(t+r*w)+1]=(a&992)>>2,n[4*(t+r*w)+2]=(a&31)>>3,n[4*(t+r*w)+3]=a&32768?0:255;break;case 24:e=r;b=q;q=0;r=d.width;for(t=a;t!==b;t+=e)for(a=p;a!==u;a+=s,q+=3)n[4*(a+r*t)+3]=255,n[4*(a+r*t)+2]=c[q+0],n[4*(a+r*t)+1]=c[q+1],n[4*(a+r*t)+0]=c[q+2];break;case 32:e=r;b=q;q=0;r=d.width;for(t=a;t!==b;t+=e)for(a=p;a!==u;a+=s,q+=4)n[4*(a+r*t)+2]=c[q+0],n[4*
|
|
|
+(a+r*t)+1]=c[q+1],n[4*(a+r*t)+0]=c[q+2],n[4*(a+r*t)+3]=c[q+3];break;default:console.error("ImageUtils::getTgaRGBA() - not support this format")}return n}(d.width,d.height,b.pixel_data,b.palettes);return{width:d.width,height:d.height,data:b}},loadTGATexture:function(a,b,c,d){var e=new THREE.TGATexture;b=new XMLHttpRequest;b.open("GET",a,!0);b.responseType="arraybuffer";b.onload=function(){if(200===this.status){var b=THREE.ImageUtils.decodeTGA(this.response);if(b)return e.image=b,e.sourceFile=a,e.needsUpdate=
|
|
|
+!0,e}};b.addEventListener("load",function(a){c&&c(e)},!1);b.addEventListener("error",function(a){d&&d(a)},!1);b.send(null);e.sourceFile=a;return e},loadDDSTexture:function(a,b,c,d){var e=[];e.loadCount=0;var f=new THREE.CompressedTexture;f.image=e;void 0!==b&&(f.mapping=b);f.flipY=!1;f.generateMipmaps=!1;var g=new XMLHttpRequest;g.onload=function(){var a=THREE.ImageUtils.parseDDS(g.response,!0);if(a.isCubemap)for(var b=a.mipmaps.length/a.mipmapCount,d=0;d<b;d++){e[d]={mipmaps:[]};for(var p=0;p<a.mipmapCount;p++)e[d].mipmaps.push(a.mipmaps[d*
|
|
|
a.mipmapCount+p]),e[d].format=a.format,e[d].width=a.width,e[d].height=a.height}else f.image.width=a.width,f.image.height=a.height,f.mipmaps=a.mipmaps;f.format=a.format;f.needsUpdate=!0;c&&c(f)};g.onerror=d;g.open("GET",a,!0);g.responseType="arraybuffer";g.send(null);return f},parseDDS:function(a,b){function c(a){return a.charCodeAt(0)+(a.charCodeAt(1)<<8)+(a.charCodeAt(2)<<16)+(a.charCodeAt(3)<<24)}function d(a,b,c,d){var e=c*d*4;a=new Uint8Array(a,b,e);for(var e=new Uint8Array(e),f=b=0,g=0;g<d;g++)for(var h=
|
|
|
0;h<c;h++){var k=a[f];f++;var l=a[f];f++;var p=a[f];f++;var r=a[f];f++;e[b]=p;b++;e[b]=l;b++;e[b]=k;b++;e[b]=r;b++}return e}var e={mipmaps:[],width:0,height:0,format:null,mipmapCount:1},f=c("DXT1"),g=c("DXT3"),h=c("DXT5"),k=new Int32Array(a,0,31);if(542327876!==k[0])return console.error("ImageUtils.parseDDS(): Invalid magic number in DDS header"),e;if(!k[20]&4)return console.error("ImageUtils.parseDDS(): Unsupported format, must contain a FourCC code"),e;var l=k[21],p=!1;switch(l){case f:f=8;e.format=
|
|
|
THREE.RGB_S3TC_DXT1_Format;break;case g:f=16;e.format=THREE.RGBA_S3TC_DXT3_Format;break;case h:f=16;e.format=THREE.RGBA_S3TC_DXT5_Format;break;default:if(32==k[22]&&k[23]&16711680&&k[24]&65280&&k[25]&255&&k[26]&4278190080)p=!0,f=64,e.format=THREE.RGBAFormat;else return console.error("ImageUtils.parseDDS(): Unsupported FourCC code: ",String.fromCharCode(l&255,l>>8&255,l>>16&255,l>>24&255)),e}e.mipmapCount=1;k[2]&131072&&!1!==b&&(e.mipmapCount=Math.max(1,k[7]));e.isCubemap=k[28]&512?!0:!1;e.width=k[4];
|