codecamp

three.js PMREMGenerator

此类从立方体贴图环境纹理生成经过预过滤的 Mipmapped 辐射环境贴图 (PMREM)。这允许根据材料粗糙度快速访问不同级别的模糊。它被打包成一种特殊的 CubeUV 格式,允许我们执行自定义插值,以便我们可以支持 RGBE 等非线性格式。与传统的 mipmap 链不同,它只下降到 LOD_MIN 级别,然后在相同的 LOD_MIN 分辨率下创建额外的甚至更多过滤的“mips”,并与更高的粗糙度级别相关联。通过这种方式,我们保持分辨率以平滑地插入漫射照明,同时限制采样计算。

构造函数

PMREMGenerator( renderer : WebGLRenderer )

此构造函数创建一个新的 PMREMGenerator。

方法

.fromScene ( scene : Scene, sigma : Number, near : Number, far : Number ) : WebGLRenderTarget

scene - 给定的场景。

sigma - (可选)指定在 PMREM 生成之前应用于场景的以弧度为单位的模糊半径。默认为 0。

near - (可选)近平面值。默认值为 0.1。

far - (可选)远平面值。默认值为 100。

从提供的场景生成 PMREM,如果网络带宽较低,这可能比使用图像更快。可选的近平面和远平面确保场景被完整渲染(cubeCamera 放置在原点)。

.fromEquirectangular ( equirectangular : Texture ) : WebGLRenderTarget

equirectangular - 等矩形纹理。

从等距柱状纹理生成 PMREM,可以是 LDR 或 HDR。理想的输入图像大小为 1k (1024 x 512),因为这与 256 x 256 立方体贴图输出最匹配。

.fromCubemap ( cubemap : CubeTexture ) : WebGLRenderTarget

cubemap - 立方体贴图纹理。

从立方体贴图纹理生成 PMREM,可以是 LDR 或 HDR。理想的输入立方体大小为 256 x 256,因为这与 256 x 256 立方体贴图输出最匹配。

.compileCubemapShader () : undefined

预编译立方体贴图着色器。您可以通过在纹理的网络获取期间调用此方法来提高并发性,从而加快启动速度。

.compileEquirectangularShader () : undefined

预编译等距柱状着色器。您可以通过在纹理的网络获取期间调用此方法来提高并发性,从而加快启动速度。

.dispose () : undefined

处理 PMREMGenerator 的内部存储器。请注意,PMREMGenerator 是一个静态类,因此您不需要多个 PMREMGenerator 对象。如果这样做,对其中之一调用 dispose() 将导致任何其他对象也变得不可用。

源码

src/extras/PMREMGenerator.js


three.js ImageUtils
three.js ShapeUtils
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

参考

核心 / BufferAttributes

渲染器 / WebXR

开发者参考

WebGL渲染器

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }