前言 上一章我们知道了如何使用几何着色器将顶点通过流输出阶段输出到绑定的顶点缓冲区.接下来我们继续利用它来实现一些新的效果,在这一章,你将了解: 实现公告板效果 Alpha-To-Coverage 对GPU资源进行读/写操作 纹理数组 实现雾效 在此之前需要额外了解的章节如下: 章节回顾 深入理解与使用2D纹理资源(重点阅读纹理数组) 15 几何着色器初探 DirectX11 With Windows SDK完整目录 Github项目源码 欢迎加入QQ群: 727623616 可以一起探讨DX1…
前言 由于在Direct3D 11中取消了固定管线,要想绘制图形必须要了解可编程渲染管线的流程,一个能绘制出图形的渲染管线最少需要有这两个可编程着色器:顶点着色器和像素着色器. 本章会直接跳过渲染管线的工作原理,直接来到编程实战. 接下来的目标如下: 通过Visual Studio自带的HLSL编译器生成顶点着色器和像素着色器 (可选)通过D3DComplier在运行期编译/生成着色器二进制文件 将着色器绑定到渲染管线上 了解顶点缓冲区,并将它绑定到输入装配阶段 完成上面的操作后就可以渲染出第一…
前言 有关计算着色器的基础其实并不是很多.接下来继续讲解如何使用计算着色器实现水波效果,即龙书中所实现的水波.但是光看代码可是完全看不出来是在做什么的.个人根据书中所给的参考书籍找到了对应的实现原理,但是里面涉及到比较多的物理公式.因此,要看懂这一章需要有高数功底(求导.偏导.微分方程),我会把推导过程给列出来. 本章演示项目还用到了其他的一些效果,在学习本章之前建议先了解如下内容: 章节内容 11 混合状态 17 利用几何着色器实现公告板效果(雾效部分) 26 计算着色器:入门 27 计算着色…
前言 上一章我们用一个比较简单的例子来尝试使用计算着色器,但是在看这一章内容之前,你还需要了解下面的内容: 章节 26 计算着色器:入门 深入理解与使用缓冲区资源(结构化缓冲区/有类型缓冲区) Visual Studio图形调试器详细使用教程(编程捕获部分) 这一章我们继续用一个计算着色器的应用实例作为切入点,进一步了解相关知识. DirectX11 With Windows SDK完整目录 Github项目源码 欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在…
前言 现在开始迎来所谓的高级篇了,目前计划是计算着色器部分的内容视项目情况,大概会分3-5章来讲述. DirectX11 With Windows SDK完整目录 Github项目源码 欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在这里汇报. 概述 这里所使用的计算着色器实际上是属于DirectCompute的一部分,DirectCompute是一种应用程序编程接口(API),最初与DirectX 11 API 一起发布,但如果你的显卡只支持到特性等级10.x…
前言 由于透明混合在不同的绘制顺序下结果会不同,这就要求绘制前要对物体进行排序,然后再从后往前渲染.但即便是仅渲染一个物体(如上一章的水波),也会出现透明绘制顺序不对的情况,普通的绘制是无法避免的.如果要追求正确的效果,就需要对每个像素位置对所有的像素按深度值进行排序.本章将介绍一种仅DirectX11及更高版本才能实现的顺序无关的透明度(Order-Independent Transparency,OIT),虽然它是用像素着色器来实现的,但是用到了计算着色器里面的一些相关知识. 这一章综合性很…
前言 最近在学粒子系统,看这之前的<<3D图形编程基础 基于DirectX 11 >>是基于Direct SDK的,而DXSDK微软已经很久没有更新过了并且我学的DX11是用Windows SDK来实现. 顺手安利一波:我最近在学DirectX11 with Windows SDK 教程 博客地址:https://www.cnblogs.com/X-Jun/p/9028764.html 所以下面的都是基于这个教程和上面提到的那本书来写的 推荐看到教程17章和书里第15章之后再来看这…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader) 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes GPU已经被优化为处理单个地址或者连续地址(流操作)的大量内存数据:这和CPU的随机内存访问形成鲜明对比.因为顶点和像素可以独立处理,所以GPU被架构为大量的并行运算:比如NVIDIA…
目录 1. WebGL 2. WebGPU 2.1. 适配器(Adapter)和设备(Device) 2.2. 着色器(Shaders) 2.3. 管线(Pipeline) 2.4. 并行(Parallelism) 2.5. 工作组(Workgroup) 2.6. 指令(Command) 3. 数据交换 3.1. 绑定组的布局(GPUBindGroupLayout) 3.2. 暂存缓冲区(Staging Buffer) 3.3. 过度调度 3.4. 麻烦的结构体(内存地址对齐问题) 3.5. 输…
大家好~本文使用WebGPU的计算着色器,实现了奇偶排序. 奇偶排序是冒泡排序的并行版本,在1996年由J Kornerup提出.它解除了每轮冒泡间的串行依赖以及每轮冒泡内部的串行依赖,使得冒泡操作可以并行执行 目录 介绍奇偶排序算法 分析时间复杂度 需求 初步设计 代码实现 发现问题 改进设计 相关代码实现 改进设计 相关代码实现 限制 总结 参考资料 最终版本的代码在这里 介绍奇偶排序算法 假设待排序的数组为Arr1 在奇数步中,Arr1中奇数项与相邻的右边一项比较和交换: 在偶数步中,Ar…