- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
由于本人比较懒,基本上混迹于问答板块与朋友们交流U3D开发很少发主题帖,
在这里准备写一些自己学习shader的一些经验与心得,然后与朋友们分享一些写sha
交流,欢迎指出错误之处)
一:工欲善其事必先利其器
首先推荐两本学习shader非常有必要而且很不错的书。
学习shader你首先应该必备一些写shader的语法
支持GPU的编程的语法有三种
微软提供的HLSL,OpenGL提供的GLSL,还有NVIDIA提供的Cg
在这里推荐使用Cg因为Cg编写的Shader同时兼容Direct3D和OpenGL。
那么要怎么学好Cg语言呢?
那么《Cg教程可编程实时图形权威指南》一定可以满足你的需求
shader
教程中比较不错的书《unity3DShaderLab开发实战详解》
二:Shader原理及基础
书本介绍完了那么首先来了解下shader的工作原理吧
从字面意思来说shader
道计算机的GPU就是为此服务的,而我们写shader的目的也就是告文章来自【
诉GPU我们画在屏幕什么位置,什么颜色,什么形态等等。
他们的工作流程是:
1.坐标系变换,(物体空间坐标-世界坐标-摄像机坐标-裁剪空间坐标)
2.流水线图形,(着色顶点-图元装配-光栅化-插值,贴图,着色)
3.unity3d渲染流程(固定关系和可编程管线的渲染)
4.光栅操作(像素所有权测试-裁剪测试-alpha测试-模板测试-深度测试-
这些之中与我们shader编程密切相关的就是第三点
固定渲染管线
这是标准的几何光照(TransformingLighting)
纹理混合。TL
可编程渲染管线
控制管线。
在unity3d引擎中运用了自定义的ShaderLab来组织Shader
在Unity3d中Shader又可分出三种形态
1.(FixedfunctionShader)属于固定渲染管线Shader,基本用于高级Shader
ShaderLab语言,语法与微软的FXfiles或者NVIDIA的CgFX类似。
2.(VertexandFragmentShader)最强大的Shader类型,属于可编程渲染管线.
3.(SurfaceShader)被誉为ShaderLab的骄傲Unity3d推崇的Shader类型,使用
使用的也是CG/HLSL语法。
三种Shader共同点:
(1)都必须从唯一一个根Shader开始
(2)Properties参数部分,作用及语法完全相同
(3)具体功能都在SubShader里(Subshader:子Shader,Shader
是对不用硬件的支持。)
(4)都可以打标签,例如都可以打标签,例如LOD200以及Lig
(5)都可以Fallback
(6)都可以处理基本的功能,例如光照漫反射(Diffuse)以及镜面反射(Specular)。
都能实现Fixedfunction实现不了的高级功能,例如基于uv计算的效果等等。
三种Shader不同点:
(1)Fixedfunctionshader以及VertexandFragmentShader在Subshader
经将具体内容打包在光照模型了,不能加pass{},加了会报错。
(2)Fixedfunctionshader每句代码之后没有分号;但是VFshader以及Surface
(3)核心结构不同
文档评论(0)