gpt4 book ai didi

three.js - 使用three.js在片段着色器中手动选择mipmaps

转载 作者:行者123 更新时间:2023-12-01 05:10:48 40 4
gpt4 key购买 nike

我正在使用 Three.js 中的 glsl 编写一个基于物理的着色器。为了增加镜面反射全局照明,我使用了内部带有 mipmap 链的立方体贴图 dds 纹理(使用 CubeMapGen 进行预计算,如 here 所述)。我需要在片段着色器中访问这个纹理,我想手动选择 mipmap 的索引。这样做的正确功能是

vec4 textureCubeLod(samplerCube sampler, vec3 coord, float lod)

但它仅在顶点着色器中可用。在我的片段着色器中,我使用了类似的功能
vec4 textureCube(samplerCube sampler, vec3 coord, float bias)

但效果不佳,因为偏差参数只是添加到自动计算的细节级别。因此,当我放大或缩小场景时,mipmap 的 LOD 会发生变化,但对于我的着色器,它必须相同(它必须仅取决于粗略参数,如上面链接中所述)。

我想手动选择片段着色器中 mipmap 的级别仅取决于 Material 的粗糙度(例如使用公式 mipMapIndex = roughness*numMipMap ),因此它必须与距离保持一致,并且在缩放时不会自动更改。我该如何解决这个问题?

最佳答案

它不适用于 webGL atm,因为不支持此功能。您可以使用最近版本的 chrome canary 尝试使用 textureLOD 扩展,但它仍然需要一些调整。关于标志并寻找这个:

Enable WebGL Draft Extensions



WebGL textureCube bias causing seams

关于three.js - 使用three.js在片段着色器中手动选择mipmaps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25218267/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com