我最近开始对ASM进行一些调查,我在网上玩了一些演示.我必须说Unreal演示非常令人印象深刻......我现在已经开发了一个使用Three的应用程序了很多个月.它在快速机器上运行得很漂亮,但在低端机器上,它往往会很挣扎.当我在低端机器上运行虚幻演示时,演示就像一个梦想.我的问题是,ASM与Three有什么关系 - 它可以大大加快发动机的速度吗?在调查或开发利用两者并基于浏览器在它们之间切换的解决方案时是否值得?还有什么计划让Three在将来利用它?
我来自C++背景,并且对开发某些东西的前景非常感兴趣.但与此同时,它意味着必须重新学习语言,甚至更多的问题可能是将它变为可用点所需的大量时间.
你的想法是什么?
是否可以修复下面的阴影贴图问题?基本上,shadowmap似乎不尊重alpha测试.阴影是树平面几何体而不是树叶.这可能与深度写作有关吗?
我只是使用标准
THREE.MeshPhongMaterial

我正在创建一个geomip映射的地形.到目前为止,我的工作相当不错.相机附近的地形镶嵌非常高,并且几何形状越远,越少.地形的几何形状基本上跟随相机并基于顶点的位置对高度图纹理进行采样.由于几何曲面细分非常高,因此您可以在采样时有时看到纹理中的每个像素.它会产生明显的像素凸起.我想我可以通过平滑高度图的采样来解决这个问题.但是,我似乎有一个与一些双线性采样代码有关的奇怪问题.我通过根据高度图纹理移动每个顶点来渲染地形.要获得给定UV坐标的顶点高度,我可以使用:
vec2 worldToMapSpace( vec2 worldPosition ) {
return ( worldPosition / worldScale + 0.5 );
}
float getHeight( vec3 worldPosition )
{
#ifdef USE_HEIGHTFIELD
vec2 heightUv = worldToMapSpace(worldPosition.xz);
vec2 tHeightSize = vec2( HEIGHTFIELD_SIZE_WIDTH, HEIGHTFIELD_SIZE_HEIGHT ); //both 512
vec2 texel = vec2( 1.0 / tHeightSize );
//float coarseHeight = texture2DBilinear( heightfield, heightUv, texel, tHeightSize ).r;
float coarseHeight = texture2D( heightfield, vUv ).r;
return altitude * coarseHeight + heightOffset;
#else
return 0.0;
#endif
}
Run Code Online (Sandbox Code Playgroud)
产生这个(注意你如何看到每个像素):

这是一个线框:

我想让地形采样更顺畅.所以我想我可以使用一些双线性采样而不是标准的texture2D函数.所以这是我的双线性采样函数:
vec4 texture2DBilinear( sampler2D textureSampler, vec2 …Run Code Online (Sandbox Code Playgroud) 有谁知道如何在threejs中渲染阴影贴图?我的场景中有一个地形网格,而不是让所有对象在地形上投射阴影,我希望我可以为应用于网格的纹理渲染一个漂亮的阴影贴图。
有没有人知道如何实现这一点 - 或者我可以应用到三个关于这个主题的文档?
** 编辑 ** 只是为了澄清以供将来参考,我想知道是否有任何技术可用于渲染/烘焙纹理,这些纹理以后可以作为统一应用于网格。
我正在将我的 webgl 延迟渲染器转换为使用高动态范围的渲染器。我从网上的各种来源阅读了很多有关该主题的内容,并且有一些问题希望能够得到澄清。我完成的大部分阅读内容都涉及 HDR 图像渲染,但我的问题与渲染器可能需要如何更改才能支持 HDR 相关。
据我了解,HDR 本质上是试图捕捉更高的光线范围,以便我们可以在极亮或黑暗的场景中看到细节。通常在游戏中,我们使用强度 1 表示白光,使用强度 0 表示黑色。但在 HDR/现实世界中,范围要多样化得多。也就是说,引擎中的太阳可能比灯泡亮 10000 倍。
为了应对这些更大的范围,您必须将渲染器转换为使用浮点渲染目标(或者理想情况下是半浮点,因为它们使用更少的内存)进行光通道。
我的第一个问题是关于照明。除了浮点渲染目标之外,这是否仅仅意味着如果以前我有一个代表太阳的光,其强度为 1,那么它现在可以/应该表示为 10000?IE
float spec = calcSpec();
vec4 diff = texture2D( sampler, uv );
vec4 color = diff * max(0.0, dot( N, L )) * lightIntensity + spec; //Where lightIntensity is now 10000?
return color;
Run Code Online (Sandbox Code Playgroud)
照明系统是否还有其他根本性变化(除了浮动纹理和更高的范围)?
接下来,我们现在有了一个浮动渲染目标,它已经累加了所有灯光值(在如上所述的较高范围内)。此时,我可能会使用诸如Bloom之类的东西对渲染目标进行一些后期处理。完成后,现在需要对其进行色调映射,然后才能将其发送到屏幕。这是因为光线范围必须转换回我们显示器的范围。
因此,对于色调映射阶段,我可能会使用后期处理,然后使用色调映射公式将 HDR 光照转换为低动态范围。我选择的技术是《神秘海域 2》中的 John Hables:
const float A = 0.15;
const float B = 0.50;
const float C = 0.10;
const float D = 0.20; …Run Code Online (Sandbox Code Playgroud) 有没有人有一个他们可以分享或了解的在ThreeJS中使用BSP树的例子?我正在寻找创建一个地形splatting示例,并希望使用BSP(或可能是八叉树??)来帮助加快渲染速度.
非常感谢