当前位置: 首页 > news >正文

【技术美术】程序化噪波实现

【技术美术】程序化噪波实现

噪波基本原理

首先通过观察噪波,可以确定我们的需求:

  • 噪波的特性
    • 随机性:宏观来看,各区域的颜色是随机的。
    • 平滑性:微观来看,各像素间的颜色是连续的。
    • 稳定性:同样的输入参数只会得到同样的结果。

而为了实现这些特性,需要采样以下方法:

  • 噪波的实现
    1. 随机性:利用随机数生成算法获取随机值。
    2. 稳定性:随机数算法实际是一种哈希函数,产生的是可控的伪随机。
    3. 平滑性:通过平滑算法平滑随机值,使各区域间有颜色过渡。

而这些方法的具体实现,根据计算方式的不同,引出了不同的噪波类型:

  • 噪波的种类
    • 基于晶格
      • 值噪波(根据值线性插值):
        • Value 噪波
      • 梯度噪波(根据向量点乘插值)
        • Perlin 噪波(柏林噪波):最早最流行的噪波实现。
        • Simplex 噪波(单纯形噪波):相比柏林噪波,开销更低且减弱方向伪影。
        • Simulation 噪波
        • Wavelet 噪波
    • 基于点
      • Worley 噪波(细胞格噪波)

实现随机数生成

随机数生成算法都是伪随机,伪随机是通过一个固定的数学公式算出来的,理论上可以预测,所以叫伪随机。之所以能形成随机效果是因为算法过于复杂,变化过于跳跃,难以简单预测出结果。

广义的随机数算法依赖迭代实现,但在 Shader 中很难做到,且不能满足稳定性要求,所以 shader 中的随机数生成算法需另辟蹊径。

最常用的实现方式如下:

\[rand(x) = fract(sin(x) * a) \]

  • a:一个非常大的常数。

其原理就是通过系数 \(a\) 大幅增加函数的变化率,使 x 即使发生一丁点变化,其结果也会千差万别,从而看上去随机了。

实现多维随机数

\[rand(\vec{x}) = fract(sin(\vec{x} \cdot \vec{b}) * a) \]

  • a:与一维中的含义一样。
  • b:一个任意给定的向量。

多维随机数生成与一维随机数生成本质是一样的,只是要先用 \(dot()\) 将多维合并成一维而已。

实现随机数平滑

参考资料

  • 利用 shader 生成随机数
  • 噪波分类
  • 游戏开发中的噪声算法
  • 使用 Unity 生成各类型噪声图的分享
  • 生成连续的 2D、3D 柏林噪声
http://www.zskr.cn/news/143301.html

相关文章:

  • 【Godot】【入门】编辑器界面速通:场景/节点/Inspector/信号(30 分钟上手不迷路)
  • leetcode 500 键盘行 WP
  • Windows系统文件msjter40.dll缺少损坏 下载修复
  • Kafka入门必知概念——Topic、分区、Offset、消费组的协作机制与影响
  • 软件缺少msjint40.dll文件 下载修复方法
  • STM32单片机温控风扇温度采集PWM调速设计
  • 延边州腺样体肥大、失眠、儿童抽动症中医调理指南 - 品牌日记
  • 流量洪峰冲不垮的秘密:揭秘系统过载保护的核心防线
  • GraphRAG革命:本体驱动的零噪声知识抽取框架,开发者的收藏必备!
  • C++学习笔记 35 虚析构函数
  • 深度解析Salesforce、Google、微软三大巨头的AI Agent战略布局与实战应用!
  • 挑战自我:如何在3个月内快速掌握工业级开发能力?AI架构师为0基础小白量身打造的超详细学习路线图!
  • PLSQL:候选字段选择
  • 2025 GEO自建vs外包决策分析:投入产出完整测算
  • 程序员必看:大模型(LLM)核心原理与实战应用详解(建议收藏)
  • 2026 高品质短剧音乐素材网站推荐:商用授权齐全,一键下载即用
  • Java:“object is not declare class”
  • Windows系统文件MSPRPCHS.DLL丢失找不到 下载修复方法
  • 热门短剧 BGM 网站合集:音质高清,适配短剧片头 / 转场 / 结局情节
  • 2025年十大IT领导层访谈盘点
  • 软件无法启动 找不到msjtes40.dll文件 下载修复方法
  • 东方博宜OJ 1335:土地分割 ← 递归求“最大公约数”
  • 高效查找短剧背景音乐网站:正规授权+高清无损,新手快速上手
  • Windows系统文件mskeyprotect.dll损坏 下载修复方法
  • 在 Android 上备份短信:保护您的对话
  • 苹果在Cloudflare 2025年全球互联网服务排名中位列第三
  • 4 STM32学习板入门视频教程 STM32芯片功能介绍
  • Vue customRef
  • OpenWRT 24.10下使用radvd发送IPv6 RIO路由
  • 64 位 Windows 对 32 位程序的兼容处理