@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
2 lines (1 loc) • 1.89 kB
JavaScript
import{extends as t}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import{PIXELFORMAT_RGB8 as e,ADDRESS_CLAMP_TO_EDGE as r,ADDRESS_REPEAT as a,PIXELFORMAT_DXT1 as s,PIXELFORMAT_DXT5 as o,PIXELFORMAT_RGBA16F as l,PIXELFORMAT_RGBA32F as m,PIXELFORMAT_ETC1 as n,PIXELFORMAT_PVRTC_2BPP_RGB_1 as h,PIXELFORMAT_PVRTC_2BPP_RGBA_1 as i,PIXELFORMAT_PVRTC_4BPP_RGB_1 as f,PIXELFORMAT_PVRTC_4BPP_RGBA_1 as p,PIXELFORMAT_RGBA8 as x}from"../../../platform/graphics/constants.js";import{Texture as c}from"../../../platform/graphics/texture.js";import{Asset as d}from"../../asset/asset.js";import{TextureParser as u}from"./texture.js";class M extends u{constructor(t){super(),this.maxRetries=0}load(t,e,r){d.fetchArrayBuffer(t.load,e,r,this.maxRetries)}open(d,u,M,w={}){const y=new Uint32Array(u,0,32),g=y[4],_=y[3],j=Math.max(y[7],1),v=4===y[20],A=y[21],U=y[22],b=65024===y[28],B=827611204,R=825438800,F=825439312;let H,P=!1,V=!1,k=!1,q=!1,z=null,C=1;if(v?A===B?(z=s,P=!0):894720068===A?(z=o,P=!0):113===A?(z=l,C=2):116===A?(z=m,C=4):826496069===A?(z=n,P=!0,V=!0):A===R||825504336===A?(z=A===R?h:i,P=!0,k=!0):A!==F&&825504848!==A||(z=A===F?f:p,P=!0,q=!0):32===U&&(z=x),!z)return H=new c(M,{width:4,height:4,format:e,name:"dds-legacy-empty"}),H;H=new c(M,t({name:d,addressU:b?r:a,addressV:b?r:a,width:g,height:_,format:z,cubemap:b,mipmaps:j>1},w));let D=128;const E=b?6:1;let G;const I=A===B?8:16;let J,K,L;for(let t=0;t<E;t++){let e=g,r=_;for(let a=0;a<j;a++){P?V?G=Math.floor((e+3)/4)*Math.floor((r+3)/4)*8:k?G=Math.max(e,16)*Math.max(r,8)/4:q?G=Math.max(e,8)*Math.max(r,8)/2:(J=Math.floor((e+4-1)/4),K=Math.floor((r+4-1)/4),L=J*K,G=L*I):G=e*r*4;const s=z===m?new Float32Array(u,D,G):z===l?new Uint16Array(u,D,G):new Uint8Array(u,D,G);b?(H._levels[a]||(H._levels[a]=[]),H._levels[a][t]=s):H._levels[a]=s,D+=G*C,e=Math.max(.5*e,1),r=Math.max(.5*r,1)}}return H.upload(),H}}export{M as DdsParser};