学习UnityShader入门精要笔记1——渲染流程概述
来源:互联网 发布:mysql怎么自动同步 编辑:程序博客网 时间:2024/06/07 23:50
常规将渲染流程分为三个阶段,应用阶段--几何阶段--光栅化阶段。
应用阶段我理解为数据准备阶段,包括位置信息,光照信息等,并设置模型材质、shader等,书中把这些定义为渲染状态。最后应用阶段会输出渲染所需的几何信息即渲染图元,交由几何阶段做渲染绘制处理。
几何阶段我理解就是shader中的vert 和 frag,逐顶点逐片元对渲染图元做处理并将结果丢给第三阶段。
光栅化阶段实现具体绘制,对得到的逐顶点数据做插值再进行逐像素处理。
书中把应用阶段的工作分为三步:加载数据到显存——设置渲染状态——调用dc通知gpu开始上班。
【误,完全不知道怎么总结这些,把书中的流程大致摘出来给自己留个印象吧
————————————————————————————————————————————————————————————————
以下是摘抄小tip:
OpenGL坐标原点在屏幕左下,DirectX坐标原点在左上,可能由于此区别导致图像倒转。
HLSL——DirectX
GLSL——OpenGL
Cg——NVIDIA
GLSL优点在于其跨平台性,此特性是由于OpenGL未提供着色编译器,由显卡驱动完成着色器编译工作。即显卡驱动支持编译GLSL就可以运行。GLSL依赖硬件而不是操作系统级别。也可能导致不同硬件商编译实现的效果不尽相同。
HLSL由微软控制着色器编译,不会由于硬件不同造成效果差异。故而支持平台相对有限。
Cg则是真正意义的跨平台,会根据平台不同编译成相应的中间语言。其跨平台型性很大原因取决于和微软的合作,故而Cg语法和HLSL相似,Cg语言可以无缝移植成HLSL
代码,但可能无法完全发挥出OpenGL最新特性。
DC中造成性能问题的元凶往往是CPU,如果DC太多,CPU会把大量时间花费在提交DC上造成CPU过载,故开发过程需要尽可能减少dc进行优化。常用的优化方法是批处理(batching),把很多小DC合并成一个大DC。
开发过程中尽量避免用大量很小的网格,或者考虑合并他们;避免使用过多材质,尽量去share一个材质。
- 学习UnityShader入门精要笔记1——渲染流程概述
- UnityShader入门精要学习笔记(一):渲染流水线
- UnityShader入门精要学习笔记(十五):渲染纹理
- UnityShader入门精要学习笔记(二):数学知识
- UnityShader入门精要学习笔记(十二):渲染路径与光源类型
- 学习UnityShader入门精要笔记2——标准光照模型
- 学习UnityShader入门精要笔记3——更复杂的光照
- 凹凸映射 Bump mapping(unityshader入门精要学习笔记)
- UnityShader入门精要学习笔记(四):光照模型理论
- UnityShader入门精要学习笔记(十):透明效果-上部分
- UnityShader入门精要学习笔记(十一):透明效果-下部分
- UnityShader入门精要学习笔记(十四):立方体纹理
- UnityShader入门精要学习笔记(十六):纹理动画
- UnityShader入门精要学习笔记(十七):顶点动画
- UnityShader入门精要学习笔记(十九):卷积与边缘检测
- UnityShader入门精要学习笔记(二十):运动模糊
- UnityShader入门精要——第9章
- 《unityshader 入门精要》漫反射光照与高光反射光照模型学习笔记
- Cocos网络篇[3.2](2) ——HTTP连接
- 【Node.js-7】MySQL数据库的简单使用、增加和查询数据
- VC 修改窗口属性
- HDU
- LVS内核性能测试
- 学习UnityShader入门精要笔记1——渲染流程概述
- 微信小程序项目实例
- 画圆(颜色渐变的光点图)
- Android 四种启动模式
- java实现websocket服务端endPoint无法注入Service问题
- 代理模式及spring AOP
- spark使用scala读取Avro数据
- xcode 调试命令
- Cocos网络篇[3.2](3) ——Socket连接(1)