-
Notifications
You must be signed in to change notification settings - Fork 43
/
cube-mipmap-texture.ts
38 lines (33 loc) · 1.22 KB
/
cube-mipmap-texture.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import * as PIXI from "pixi.js"
import { MipmapResource } from "./mipmap-resource"
import { CubeMipmapResource } from "./cube-mipmap-resource"
/**
* Cubemap texture which supports multiple user specified mipmaps.
*/
export class CubeMipmapTexture extends PIXI.BaseTexture {
/** Returns an array of faces. */
static get faces() {
return ["posx", "negx", "posy", "negy", "posz", "negz"]
}
/** Returns the number of mipmap levels. */
get levels() {
return (<CubeMipmapResource>this.resource).levels
}
/**
* Creates a new cubemap texture from the specified source.
* @param source The array of mipmap sources. The format of the mipmap source
* should be "cubemap_{{face}}.jpg". "{{face}}" will automatically be
* replaced with the faces (posx, negx, posy, negy, posz, negz).
*/
static fromSource(source: string[]) {
let resources = CubeMipmapTexture.faces.map((face, index) => {
let textures = source.map((val) => {
return PIXI.Texture.from(val.replace("{{face}}", face))
})
return new MipmapResource(textures,
PIXI.TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + index)
})
return new CubeMipmapTexture(
new CubeMipmapResource(resources, source.length))
}
}