shader新手入门——分享我的shader入门经验
来源:互联网 发布:淘宝售后可以申请几次 编辑:程序博客网 时间:2024/06/03 21:36
一、什么是shader、图像是怎么渲染到屏幕的?
首先在这里推荐 冯乐乐 女神的shader入门精要 一书,这本书算是带领我入门的~,第一章详细介绍了关于shader的概念以及其中的过程,这里也不过于详细介绍~说下自己的总结吧。
应用阶段—几何阶段—光栅化阶段
我这里粗略的概括的理解:
应用阶段:CPU把场景数据(包括纹理、模型顶点、面)等信息简单过滤后(比如过滤掉看不到的面)传递给GPU。
几何阶段:对传进来的数据处理,主要是处理顶点。通常用于1 、从模型顶点 转换到 屏幕显示 2、裁剪掉一些透明的顶点、在摄像机范围外看不到的等 3、给每个顶点指定颜色
光栅化阶段:三角形设置:把上一个阶段处理过的顶点组合成三角形片,叫做片元。
三角形遍历:然后通过对三角形的三个顶点差值计算出这个片元的深度、顶点坐标等信息 。
片元着色器:计算这个片元覆盖了哪些像素、通过差值计算出来的顶点坐标对纹理取值、然后逐片元的为像素填充颜色。
逐片元操作:对这个片元进行模板测试,例如深度测试(简单的说就是判断屏幕中之前这个位置已经存在的颜色片元 和 刚刚计算得出来的片元 对比哪个离摄像机更近, 通过距离判断有无遮挡,被遮挡了就不显示)等等还有其他测试。如果这个片元通过了所有的测试,那么恭喜,这个片元可以和之前这个位置已经存在的颜色片元进行颜色混合或者直接覆盖。
这就是我的通俗易懂的解释~有好多解释不够专业,如果想深入了解建议去看冯乐乐的shader入门精要~,这里就介绍到这里。
二、了解UnityShader
这里说的了解UnityShader是、比如说Unity Shader书写格式,每句话的意义是做什么的、UnityShader的分类,这里我推荐是去看一篇叫做:《猫都能学会的unity3d shader入门指南》。
这里我也简单的介绍一下UnityShader分类吧:(着色器就等于shader)
Unity Shader大致可分为三类:固定管线着色器、表面着色器、顶点片段着色器
固定管线着色器:这个我没有太多的理解、据说是已经很古老的一种了,哈哈,反正就是已经快淘汰的一种着色器,不过对古老机型的支持很不错哦~
表面着色器:是对顶点片段着色器的一种封装,表面着色器完全可以被顶点片段着色器代替,因为编译出来的源码就是顶点片段着色器,建议新手可以简单学学这个,但更建议学顶点片段着色器哦
顶点片段着色器:包含顶点函数和片段函数,可以通俗的吧顶点函数和片段函数 理解成 对应的几何阶段 和 光栅化阶段。
三、说下学习方法
首先你要熟悉shader、强烈建议先看《猫都能学会的unity3d shader入门指南》,5分钟就能看完、然后照着上面的代码打几遍加深印象、然后多接触shader、再看女神的《Unity Shader入门精要》。等你把女神的书看完,入门决定没问题了~
今天就写到这了~写博客真不容易。
- shader新手入门——分享我的shader入门经验
- Shader入门——我的第一篇shader
- Shader经验分享
- Wzy—Shader新手入门精讲(一)
- 【Unity Shader入门精要】— Unity Shader基础
- 【Unity Shader入门精要】— 开始Unity Shader之旅
- 【Unity Shader入门精要】— 写Shader所需的数学基础
- shader 的入门
- Shader入门的杂七杂八
- shader 是什么————图形学的入门课
- 【Unity Shader入门精要】— 渲染流水线
- 【Unity Shader入门精要】— 基础纹理
- 【Unity Shader入门精要】— 透明效果
- 【Unity Shader入门精要】— 中级篇
- 【Unity Shader入门精要】— 高级篇
- 【Unity Shader入门精要】— 扩展篇
- Mobile Shader Adjustment—— 什么是高效的Shader
- Unity Shader——Shader实现大海的波涛效果
- http://www.cnblogs.com/bluestorm/archive/2012/03/02/2377615.html
- 使用Redis Hash结构来存储对象,更改有限字段;
- 使用shiro+ehcache进行缓存权限数据
- vue.js学习笔记(六)--利用v-model实现父子组件间的双向通信
- Android常规问题总结
- shader新手入门——分享我的shader入门经验
- Codeforces
- Error Back Propagation in BPNeuralNetwork及手写字体识别python版
- 矩阵快速幂
- SVN版本冲突解决详解
- JavaScript HTML DOM 元素(节点)
- Centos Nginx 多php版本
- LeetCode 1. Two Sum--数组中两元素相加为该数值,输出对应的两个索引
- Linux驱动开发之环境配置