| 930 | return isIOS ? THREE.HalfFloatType : THREE.FloatType; |
| 931 | } |
| 932 | createAllFBO() { |
| 933 | const type = this.getFloatType(); |
| 934 | const opts = { |
| 935 | type, |
| 936 | depthBuffer: false, |
| 937 | stencilBuffer: false, |
| 938 | minFilter: THREE.LinearFilter, |
| 939 | magFilter: THREE.LinearFilter, |
| 940 | wrapS: THREE.ClampToEdgeWrapping, |
| 941 | wrapT: THREE.ClampToEdgeWrapping, |
| 942 | } as const; |
| 943 | for (const key in this.fbos) { |
| 944 | this.fbos[key] = new THREE.WebGLRenderTarget( |
| 945 | this.fboSize.x, |
| 946 | this.fboSize.y, |
| 947 | opts |
| 948 | ); |
| 949 | } |
| 950 | } |
| 951 | createShaderPass() { |
| 952 | this.advection = new Advection({ |
| 953 | cellScale: this.cellScale, |