| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> unity-shader-1 -> 正文阅读 |
|
[游戏开发]unity-shader-1 |
《unity shader入门精要》阅读笔记 什么是 shadershader 着色器 什么是渲染流水线由一个三维场景或物体出发,最终生成一张二维图像的过程 大体上,就是 CPU 把数据加载到显存、CPU 设置渲染状态、CPU 调用 Draw Call 让 GPU 在屏幕上绘制图形
另一种简单地划分,就是分为三个阶段:应用阶段、几何阶段、光栅化阶段 调用 Draw Call 之前,都是 CPU 在组织需要绘制的数据,就是应用阶段 调用 Draw Call 后,GPU 如何将渲染状态、顶点数据绘制成屏幕上的像素,就是几何阶段、光栅化阶段。这一步骤又叫 GPU 的渲染流水线
小结准备阶段:CPU把场景数据转化为渲染图元(点/线/三角面),传递给几何阶段 几何阶段:进行顶点、多边形的操作,将顶点坐标转化为屏幕空间坐标,计算顶点的着色信息等 光栅化阶段:对顶点数据进行插值,生成屏幕上的像素 shader 实现原理在 几何阶段 和 光栅化阶段,又可以划分为多个子阶段,不同阶段有各自的可配置性、可编程性 因此,在了解渲染过程后,我们可以通过一些配置或编程控制其中的某些子阶段,让 GPU 最终渲染我们想要的图像 几何阶段细分的子阶段顶点着色器–可编程–第一个子阶段GPU 在每个顶点上,调用顶点着色器,决定顶点坐标变换 (从模型空间转化为齐次裁剪空间) 和顶点颜色 曲面细分着色器–可选的、可编程几何着色器–可选的、可编程裁剪–可配置–剔除相机视野外的顶点经过上一步将模型坐标,变换到小立方体空间中,有一些顶点在小立方体空间的外面,属于不可见的,应该被舍弃 屏幕映射–不可配置、不可编程–最后一个子阶段将小立方体空间,映射到屏幕的二维空间中,经过矩阵变换为屏幕坐标系(窗口坐标系) 光栅化阶段细分的子阶段三角形设置–不可配置、不可编程计算三角形网格覆盖了哪些像素,对每一个像素采样 判断像素的中心,是否落在三角形内部(计算点积,某点与三角形的三条边,都在同一侧,则说明该点在三角形内) 三角形遍历–不可配置、不可编程又叫扫描变换阶段,计算出每个像素点是否落在三角形网格中 片元着色器–可编程又叫像素着色器 ,根据上一步计算好 片元 信息后,对顶点信息插值计算,可以实现很多重要的效果 逐片元操作–可配置又叫 输出合并 阶段,计算片元的可见性、颜色混合,最终输出到颜色缓冲区,由 GPU 将缓冲区的图像输出 总结shader 就是在渲染流水线上的一些可高度编程的阶段,包括顶点着色器、片元着色器等,我们通过编写着色器代码,控制图像渲染的细节 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 10:28:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |