(评论)
(comments)
原始链接: https://news.ycombinator.com/item?id=38032288
听到这真是太棒了! 如果您有任何疑问或有任何其他想要学习的内容,请随时与我们联系。 具体来说,这种实现或多或少是我所认为的“简单噪声”着色器,没有任何附加功能 - 但从视觉设计的角度来看,肯定还有改进的空间。 另请注意,此实现可能会增加一些显着的性能成本,因为它涉及查找每个输出像素的柏林噪声图。 特别是对于游戏开发目的,您可能可以通过各种技巧显着优化成本,例如降低分辨率、仅在绝对必要时执行读取和写入等。无论如何,我很高兴您喜欢并发现它很有帮助!
一种可能的替代方案是合并较低质量版本的柏林噪声来模拟低频细节,然后使用在更小的几何尺度上运行的简单程序噪声模式渲染的高频细节来增强它们。 这比直接在着色器中的任何地方应用柏林噪波具有更好的性能。 另一种选择是执行各种简单的滤波器并将其均匀地应用在每像素采样率域中。 人们普遍认为,添加一些高通滤波有助于提高感知质量,而不会像对所有内容使用 Perlin 噪声一样牺牲性能。
关于 WebGl / Javascript 问题 - 是的,上面提供的演示是作为 WebGl 与 JavaScript 框架 CodeMirror 的组合来实现的,以实现内联编辑功能。 具体来说,托管模拟的实际画布是嵌入在 CodeMirror 实例中的 WebGl 画布元素。 无论如何,整体页面结构并不重要,因为着色器完全在服务器端执行。
Web 程序集 (WASM) 是沙箱和移植着色器和代码片段(例如little-math 和 hlsl 示例)的另一个流行选择,提供类似的功能。 请注意,除非明确提供,否则 WASM 目前缺乏回调客户端应用程序并实时交互的能力。 不过,对于静态代码,它提供了一种特别引人注目的方法,可以根据需要将高度定制的模拟和可视化嵌入到外部页面(包括教程和其他在线教育资源)中。
要回答有关 CSS 动画与着色器的第二个问题,核心区别在于 CSS 动画仅限于 2D 画布元素,而着色器在视觉复杂性和范围方面具有更大的灵活性
reply