1
1
import * as THREE from 'three' ;
2
2
3
- import { EXRLoader } from 'three/addons/loaders/EXRLoader.js' ;
4
- import { KTX2Loader } from 'three/addons/loaders/KTX2Loader.js' ;
5
- import { RGBELoader } from 'three/addons/loaders/RGBELoader.js' ;
6
- import { TGALoader } from 'three/addons/loaders/TGALoader.js' ;
7
3
import { FullScreenQuad } from 'three/addons/postprocessing/Pass.js' ;
8
4
9
5
import { UISpan , UIDiv , UIRow , UIButton , UICheckbox , UIText , UINumber } from './ui.js' ;
@@ -50,7 +46,7 @@ class UITexture extends UISpan {
50
46
} ) ;
51
47
this . dom . appendChild ( canvas ) ;
52
48
53
- function loadFile ( file ) {
49
+ async function loadFile ( file ) {
54
50
55
51
const extension = file . name . split ( '.' ) . pop ( ) . toLowerCase ( ) ;
56
52
const reader = new FileReader ( ) ;
@@ -67,10 +63,12 @@ class UITexture extends UISpan {
67
63
68
64
} else if ( extension === 'hdr' || extension === 'pic' ) {
69
65
70
- reader . addEventListener ( 'load' , function ( event ) {
66
+ reader . addEventListener ( 'load' , async function ( event ) {
71
67
72
68
// assuming RGBE/Radiance HDR image format
73
69
70
+ const { RGBELoader } = await import ( 'three/addons/loaders/RGBELoader.js' ) ;
71
+
74
72
const loader = new RGBELoader ( ) ;
75
73
loader . load ( event . target . result , function ( hdrTexture ) {
76
74
@@ -90,7 +88,9 @@ class UITexture extends UISpan {
90
88
91
89
} else if ( extension === 'tga' ) {
92
90
93
- reader . addEventListener ( 'load' , function ( event ) {
91
+ reader . addEventListener ( 'load' , async function ( event ) {
92
+
93
+ const { TGALoader } = await import ( 'three/addons/loaders/TGALoader.js' ) ;
94
94
95
95
const loader = new TGALoader ( ) ;
96
96
loader . load ( event . target . result , function ( texture ) {
@@ -113,7 +113,9 @@ class UITexture extends UISpan {
113
113
114
114
} else if ( extension === 'ktx2' ) {
115
115
116
- reader . addEventListener ( 'load' , function ( event ) {
116
+ reader . addEventListener ( 'load' , async function ( event ) {
117
+
118
+ const { KTX2Loader } = await import ( 'three/addons/loaders/KTX2Loader.js' ) ;
117
119
118
120
const arrayBuffer = event . target . result ;
119
121
const blobURL = URL . createObjectURL ( new Blob ( [ arrayBuffer ] ) ) ;
@@ -142,7 +144,9 @@ class UITexture extends UISpan {
142
144
143
145
} else if ( extension === 'exr' ) {
144
146
145
- reader . addEventListener ( 'load' , function ( event ) {
147
+ reader . addEventListener ( 'load' , async function ( event ) {
148
+
149
+ const { EXRLoader } = await import ( 'three/addons/loaders/EXRLoader.js' ) ;
146
150
147
151
const arrayBuffer = event . target . result ;
148
152
const blobURL = URL . createObjectURL ( new Blob ( [ arrayBuffer ] ) ) ;
0 commit comments