【在线培训】Unity中Shader的运用开发实战详解

在线   2014年08月06日 20:30 - 21:50

演讲嘉宾

吕剑锋

Unity大中华区认证培训师 项目经理 嘉宾介绍:Unity大中华区认证培训师,中国最早一批使用Unity进行开发的工程师,曾在大型游戏公司担任主程,项目经理等职位。主持开发某船舶研究所《海军军事演练》项目以及网络《虚拟画廊展示厅》项目,在Unity游戏和虚拟现实方向都具有丰富产品研发经验。

会议介绍

对于许多玩家来说游戏高画质从来都是不二需求,如果一款游戏光线都一模一样,玩家对游戏兴趣将大打折扣,Unity配备强大的阴影和材料的语言工具称为ShaderLab,以程式语言来看,它类似于CgFX和Direct3D的语法,本期我们特邀讲师介绍Unity中shader的原理和工作方式的阐述,让开发者能够理解shader的功能,运用Shader做出想要的特殊效果增强游戏的画面并且帮助一些未曾接触过shader的开发人员能够快速入门找到学习方向。

课程大纲:

1、展示Unity中在次时代游戏或作品中的高表现能力;

2、shader的作用及对shader的误解;

3、Unity中的shader工作方式;

4、shader学习方向指南;

5、shader程序优化;

6、shader学习参考资料;

【重要提示】:

直播时间:

8月6日(星期三)晚20点30分—— 21点50分

20点20分-20点30分 网络登录视频平台

参加流程:

报名参加 ——邮件/短息 获得直播间入口链接 —— 观看视频 —— 实时问答

1、在线视频直播互动,采用三分屏模式,让您感受真实的对话环境。

2、本次会议机会难得,由于报名人员较多,将对申请参会者进行资格审核,请您务必填写真实个人信息以便通知(短信、邮件)及时送达确保您的顺利参加。

3、邮件和短信提醒将会在课程前一天发出,具体时间以邮件通知为准!

小伙伴们快来报名参加吧!

PS:咨询请加入(CSDN游戏开发QQ群:311646104)

适用群体:

有Unity项目或使用经验的程序开发人员,和从事3D美术制作工作者。

【背景资料】

在Unity3d里,所有的图形绘制都必须通过Shader,即着色器。一般的使用过程中,我们用到的都是unity自带的Shader,即build-in shader。学习Shader后,自己写的Shader能做出很多你想要的特殊效果,增强游戏的画面表现。例如 水的倒影。 LOGO的光影闪过等等效果等等。
Shader的分类

Shader按管线分类一般分为固定渲染管线与可编程渲染管线

1)固定渲染管线 ——这是标准的几何&光照(Transforming&Lighting)管线,功能是固定的,它控制着世界、视、投影变换及固定光照控制和纹理混合。T&L管线可以被渲染状态控制,矩阵,光照和采制参数。功能比较有限。基本所有的显卡都能正常运行。

2)可编程渲染管线——对渲染管线中的顶点运算和像素运算分别进行编程处理,而无须象固定渲染管线那样套用一些固定函数,取代设置参数来控制管线。
Unity3d的三种Shader

Unity的Shader分为三种:

(1)Fixed function shader 属于固定渲染管线 Shader, 基本用于高级Shader在老显卡无法显示时的Fallback(之后有详细介绍)。使用的是ShaderLab语言,语法与微软的FX files 或者NVIDIA的 CgFX类似。

(2)Vertex and Fragment Shader 最强大的Shader类型,属于可编程渲染管线. 使用的是CG/HLSL语法。

(3)Surface Shader Unity3d推崇的Shader类型,使用Unity预制的光照模型来进行光照运算。使用的也是CG/HLSL语法。
Unity3d三种Shader对比
三种Shader共同点:
(1)都必须从唯一一个根Shader开始
(2)Properties参数部分,作用及语法完全相同
(3)具体功能都在SubShader里(Subshader: 子Shader,Shader会自上而下运行第一个硬件能支持的Subshader,主要作用是对不用硬件的支持。)
(4)都可以打标签,例如Tags { "RenderType" = "Opaque" } LOD 200 以及Lighting On等
(5)都可以Fallback
(6)都可以处理基本的功能,例如光照漫反射(Diffuse)以及镜面反射(Specular)。但是Vertex and Fragment和Surface都能实现Fixed function实现不了的高级功能,例如基于uv计算的效果等等。

三种Shader不同点:
(1)Fixed function shader以及Vertex and Fragment Shader在subshader下面还有pass{},但是Surface Shader,由于已经将具体内容打包在光照模型了,不能加pass{},加了会报错。
(2)Fixed function shader每句代码之后没有分号';' 但是V&F shader以及Surface shader每句代码之后都必须加分号';'
(3)核心结构不同:
Fixed function shader的核心是
Material{} 以及 SetTexture[_MainTex]{}

Vertex and Fragment Shader的核心是

CGPROGRAM

#pragma vertex vert

#pragma fragment frag

#include "UnityCG.cginc"

ENDCG

Surface Shader的核心是

(1)这套用的是Unity3d自带光照模型Lambert,也不做顶点处理,那么只需要一个表面处理函数surf即可

CGPROGRAM
#pragma surface surf Lambert
ENDCG
或者(2)这套表示使用的是自己写的光照模型lsyLightModel,并且使用了顶点处理函数vert

CGPROGRAM
// surface 表面处理函数 光照模型函数 顶点处理:函数
#pragma surface surf lsyLightModel vertex:vert
//执行顺序 顶点处理函数 -> 表面处理函数 -> 光照模型函数 ->颜色值

支持单位:Unity教育学院:http://edu.china.unity3d.com/

移动技术与运营深度解析 请扫一扫关注官方微信账号mobilehub

如果您有好的议题分享,我们也欢迎您申请或推荐讲师【讲师申请】

参会人数:
5 1 9

时间地点

  • 时间:2014年08月06日 20:30 - 21:50
  • 地点:在线

联系我们

如果想在CSDN会议平台发布会议,请与我们联系: 联系人:段思倍 电话:010-51661202-153
邮箱:QQ群 311646104