
WebGPU實現Ray Packet
- 2022 年 9 月 1 日
- 筆記
大家好~本文在 如何用WebGPU流畅渲染百万级2D物体? 基础上进行优化,使用WebGPU实现了Ray Packet,也就是将8*8=64条射线作为一个Packet一起去访问BVH的节点。这样做的好处是整个Packet只需要一个维护BVH节点的Stack,节省了GPU Shared Memory; …
Continue Reading
大家好~本文在 如何用WebGPU流畅渲染百万级2D物体? 基础上进行优化,使用WebGPU实现了Ray Packet,也就是将8*8=64条射线作为一个Packet一起去访问BVH的节点。这样做的好处是整个Packet只需要一个维护BVH节点的Stack,节省了GPU Shared Memory; …
Continue Reading
大家好~本文使用WebGPU的计算着色器,实现了奇偶排序。 奇偶排序是冒泡排序的并行版本,在1996年由J Kornerup提出。它解除了每轮冒泡间的串行依赖以及每轮冒泡内部的串行依赖,使得冒泡操作可以并行执行 目录 介绍奇偶排序算法 分析时间复杂度 需求 初步设计 代码实现 发现问题 改进设计 相 …
Continue Reading
大家好~我们已经实现了百万级2D物体的流畅渲染,不过是基于计算管线实现的。本文在它的基础上,改为基于光追管线实现,主要进行了CPU和GPU端内存的优化,成功地将渲染的2D物体数量由4百万提高到了2千万 相关文章如下: 如何用WebGPU流畅渲染百万级2D物体? 本文不需要实现构建和遍历BVH,而是直 …
Continue Reading
目录 1. 核心概念 ① 适配器和设备 ② 缓冲、纹理、采样器 ③ 绑定组 ④ 着色器与管线 ⑤ 编码器与队列 2. 重要机制 ① 缓冲映射机制 ② 时间线 1. 核心概念 这部分不会详细展开,以后写教程时会深入。以下只是核心概念,是绝大多数 WebGPU 原生程序要接触的,并不是全部。 ① 适配器 …
Continue Reading
大家好~本文使用WebGPU和光线追踪算法,从0开始实现和逐步优化Demo,展示了从渲染500个2D物体都吃力到流畅渲染4百万个2D物体的优化过程和思路 目录 需求 成果 1、选择渲染的算法 2、实现内存需求 3、渲染1个圆环 4、测试渲染极限 5、尝试设置workgroup_size 6、实现BV …
Continue Reading
WGSL 还在积极讨论中,虽然各位大佬不是很满意这个新生儿。 不过,社区已经有了基础的实验性工具(VSCode 插件),并支持了较新的语法。 ① WGSL 插件 这个插件支持对文件扩展名为 .wgsl 的源代码文件进行高亮显示。 ② WGSL Literal 插件 这个插件允许你在 JavaScri …
Continue Reading
目录 1. WebGL 2. WebGPU 2.1. 适配器(Adapter)和设备(Device) 2.2. 着色器(Shaders) 2.3. 管线(Pipeline) 2.4. 并行(Parallelism) 2.5. 工作组(Workgroup) 2.6. 指令(Command) 3. 数据 …
Continue Reading目录 1. WebGL 中的纹理 1.1. 创建二维纹理与设置采样参数 1.2. 纹理数据写入与拷贝 1.3. 着色器中的纹理 1.4. 纹理对象 vs 渲染缓冲对象 1.5. 立方体六面纹理 1.6. WebGL 2.0 的变化 1.7. Mipmapping 技术 2. WebGPU 中的纹理 …
Continue Reading目录 1. WebGL 1.1. 使用 WebGLProgram 表示一个计算过程 1.2. WebGL 没有通道 API 2. WebGPU 2.1. 使用 Pipeline 组装管线中各个阶段 2.2. 使用 PassEncoder 调度管线内的行为 2.3. 使用 CommandEncoder …
Continue Reading目录 1. WebGL 1.0 Uniform 1.1. 用 WebGLUniformLocation 寻址 1.2. 矩阵赋值用 uniformMatrix[234]fv 1.3. 标量与向量用 uniform[1234][fi][v] 1.4. 传递纹理 2. WebGL 2.0 Uniform …
Continue Reading