unity3D学习之shader学习的教程.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

单元金卷 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档