纳金网

标题: 新书上市 -《Unity 3D ShaderLab开发实战详解》 [打印本页]

作者: 艾西格亚    时间: 2013-8-14 21:00
标题: 新书上市 -《Unity 3D ShaderLab开发实战详解》
作者笔名: 小雨点
网名:Lucfier


本书介绍:
Unity3D是当今国内外都比较流行的一个3D游戏开发引擎,无论页游,手游如IOS,Andoid平台,均可使用Unity3D来开发。国内目前已知的Unity3D书籍不多,而且介绍不专,不深,都是为了新手而写的入门级书籍。

本书专注于Unity3D引擎的渲染方面,因此属于比较深入和专注的技术类讲解。

表现力和感染力是任何游戏的基本要素,但是在表现力和运行效率之间,开发人员不得不做出一些权衡,在游戏的运行效率,可适应平台,以及表现力之间做出选择和平衡。这个时候,只有项目开发人员深刻了解引擎的底层,才可能做出适当的选择,兼顾表现力和效率。而这本书Unity3D ShaderLab初解就是要告诉读者,让读者明白Unity3D引擎底层的渲染框架,材质的组织,运作方式,从而能够让读者在学习完本书后,在以后再面对鱼和熊掌的难题时,能够做出正确,甚至二者兼顾的完美选择。

适合阅读的对象:
这本书的面向对象是 Unity3D中高级程序员,Unity3D特效开发

网购位置:
http://www.amazon.cn/Unity-3D-ShaderLab%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98%E8%AF%A6%E8%A7%A3-%E9%83%AD%E6%B5%A9%E7%91%9C/dp/B00J0DY7YI/ref=sr_1_1?ie=UTF8&qid=1395106253&sr=8-1&keywords=unity3d+shaderlab

内容:
第一篇 菜鸟报道

第一章 着色器的概念和在 3D 游戏中的作用
1.1       Shader 的概念
1.2       Shader 的实例化 Material
1.3       Shader 的实现语言

第二章 Unity 中着色器的形态
2.1        Unity 通过 ShaderLab 来组织 Shader
2.1.1     关键字 Shader
2.1.2     使用 SubShader 组织着色器的不同实现
2.1.3     SubShader 的重要标签
2.1.4     渲染物体:SubShader 中的 Pass
2.1.5     Pass 的标签和其名字的意义
2.1.6     如何保证 Shader 的广泛适应性
2.2        ShaderLab 所支持的着色器编程语言
2.3        Unity 中着色器的三种形态
2.3.1     固定管线
2.3.2     可编程 Shader
2.3.3     ShaderLab 的骄傲:surface  shader
2.4        着色器的数据接口:属性和 uniform 变量
2.4.1     在属性块中定义属性
2.4.2     通过图形界面操作属性
2.4.3     通过脚本操作属性
2.4.4     矩阵:不能在属性块中定义的变量
2.4.5     在 Cg 代码中使用属性

第三章 着色器中所要用到的各种空间的概念
3.1        模型空间
3.1.1     为什么用模型空间
3.1.2     在脚本和 Shader 中进出模型空间
3.2        世界空间
3.2.1     统一表达:世界坐标
3.2.2     在脚本和 Shader 中进出世界坐标空间
3.3        视空间
3.3.1     渲染的需要:视空间
3.3.2     在脚本和 Shader 中进出视空间
3.4        空间的一块:视锥体
3.4.1     看得见的部分:视锥体
3.5        剪切空间
3.5.1     投影
3.5.2     脚本和 Shader 中的投影矩阵

第四章 基本的光照模型
4.1        光源对物体照明的分类
4.1.1     间接照明
4.1.2     直接照明
4.2        照明的计算方式:光照模型
4.2.1     漫反射和 Lambert
4.2.2     镜面高光和 Phong
4.2.3     半角向量和 BlinnPhong

第二篇    Unity 中的照明 Lighting

第五章 第一个被执行的 Pass
5.1        不同的 LightMode 被选择的优先顺序
5.1.1     渲染路径和 Pass 的 LightMode 标签
5.1.2     设计可以检测渲染路径的 Shader
5.1.3     设计一个便于检测渲染路径的场景
5.1.4     VertexLit 渲染路径下 Pass 的执行
5.1.5     Forward 渲染路径下 Pass 的执行
5.1.6     Deferred 渲染路径下 Pass 的执行
5.1.7     不同渲染路径下 Pass 执行规则的总结
5.2        三个渲染路径之外
5.2.1     LightMode 的其它值
5.2.2     设计检测用的材质
5.2.3     Always 类型的 Pass 在三种渲染路径下的执行第六章
5.2.4     LightMode 的默认值和其在三种渲染路径下的执行

第六章 渲染路径 VertexLit
6.1        顶点照明
6.1.1     什么是顶点照明
6.1.2     存取光源数据的变量
6.2        顶点照明和 Unity 存放光源的第一种方式
6.2.1     用于调试输出的材质
6.2.2     设计检测的场景
6.2.3     在 Vertex  Pass 中的检测结果
6.2.4     可能会迷惑你的数据
6.3        顶点照明和 Unity 存放光源的第二种方式
6.3.1     用于调试输出的材质
6.3.2     设计检测的场景
6.3.3     在 Vertex  Pass 中的检测结果
6.4        顶点照明和 Unity 存放光源的第三种方式
6.4.1     Unity 为顶点照明准备的光源
6.4.2     用于验证的场景
6.4.3     顶点照明中的点光源
6.4.4     计算顶点照明的 ShadeVertexLights 函数
6.4.5     顶点照明中的 Pixel 点光源
6.4.6     顶点照明中的平行光
6.4.7     小结顶点照明中的灯光信息
6.4.8     顶点照明的一个实现例子

第七章 渲染路径 Forward Rendering
7.1        ForwardBase 和 ForwardAdd
7.1.1     设计检验用的场景和材质
7.1.2     ForwardBase 和 ForwardAdd 的表现
7.2        Forward 渲染路径下的重要光源
7.2.1     设计检验用的材质
7.2.2     不存在 Pixel 光源时的情况
7.2.3     存在 Pixel 平行光时的情况
7.2.4     存在 Pixel 点光源时的情况
7.2.5     有多种类型的 Pixel 光源时的情况
7.2.6     Forward 渲染路径下 Pixel 光源小结
7.3        重要光源在 ForwardAdd 内的执行
7.3.1     设计用来检测 Pixel 光源的材质
7.3.2     设计检测用的场景
7.3.3     检测结果:ForwardAdd 如何被执行
7.4        ForwardBase 和 Unity 存放光源的第一种方式
7.4.1     设计检测用的材质
7.4.2     第一种方式内的 Vertex 点光源
7.4.3     第一种方式内的平行光
7.4.4     第一种方式内的重要 Pixel 点光源
7.4.5     只有 ForwardBase 时的情况总结
7.4.6     ForwardAdd 对 unity_4LightPos 变量数组的影响
7.4.7     有 ForwardAdd 时存放光源数据第一种方式的总结
7.5        ForwardAdd 和 Unity 存放光源的第一种方式
7.5.1     设计检验用的材质
7.5.2     设计检验用的场景
7.5.3     Pixel 光源和 unity_4LightPos 数组变量
7.5.4     平行光和 unity_4LightPos 数组变量
7.5.5     数组变量 unity_4LightPos 的使用情况分析
7.6        Forward 渲染路径和 Unity 存放光源的第三种方式
7.6.1     检测 ForwardBase 内 unity_LightPosition 数组变量的材质
7.6.2     检测结果:第三种方式不包含对 ForwardBase 有效的数据
7.6.3     检测结果:第三种方式不包含对 ForwardAdd 有效的数据
7.7        Forward 渲染路径情况总结
7.7.1     Forward 渲染路径下材质的适应性
7.7.2     Unity 如何为 Forward 渲染路径设置光源
7.7.3     函数 Shade4PointLights()

第八章 基于光照贴图的烘焙照明
8.1        单光照贴图和 VertexLit 渲染路径
8.1.1     测试烘焙的场景
8.1.2     烘焙场景中使用的材质
8.1.3     烘焙的前提:静态物体
8.1.4     如何在烘焙中使用自发光材质
8.1.5     烘焙之后静态物体和非静态物体的实时照明
8.1.6     应用光照贴图到 VertexLit 渲染路径下的材质中
8.1.7     写自己的材质,改变实时光源对烘焙后物体的照明
8.2        在效果和性能间进行权衡
8.2.1     影响全局的 Resolution 选项
8.2.2     影响单个物体的 Scale  In  Lightmap 选项
8.3        单光照贴图和 Forward 渲染路径
8.3.1     单光照贴图在 VertexLit 和 Forward 下面的不同表现
8.3.2     准备可应用于烘焙的自发光材质
8.3.3     在 ForwardBase 内计算光照贴图
8.3.4     Forward 渲染路径下,烘焙之后的实时照明
8.4        单光照贴图在 Deferred 渲染路径下的实时阴影
8.5        双光照贴图和 Deferred 渲染路径
8.5.1     全局 GI,间接照明,以及双光照贴图
8.5.2     混合双光照贴图和实时照明
8.5.3     观察混合过程
8.5.4     双光照贴图的使用限制
8.6        双光照贴图和 Forward 渲染路径
8.6.1     Surface  Shader 中的后门,dualforward 开关
8.7        方向光照贴图和 Forward 渲染路径
8.7.1     烘焙后的凹凸问题
8.7.2     Direction Lightmaps 和凹凸

第九章 基于 LightProbes 的照明
9.1        初识 LightProbes
9.1.1     LightProbes 照明的优点
9.1.2     检验 LightProbes 照明的场景
9.1.3     使用 Light  Probe Group 进行管理
9.1.4     烘焙场景光照信息到 LightProbes 中
9.1.5     对比 LightProbes 照明和实时照明
9.2        放置 LightProbes 的注意事项
9.2.1     必须形成一个体积
9.2.2     单个 Light  Probe 必须处于采样光源的照射范围
9.3        动态更新 LightProbes
9.3.1     更新数据的注意事项
9.3.2     更改不同通道的 Coefficient
9.4        LightProbe 照明采用和 Archor  Override
9.4.1     基于线性插值的采样
9.4.2     改变默认的插值位置
9.5        LightProbe 照明和阴影
9.5.1     LightProbe 和光照贴图的异同
9.5.2     烘焙阴影时可能会犯的错误
9.5.3     将静态物体的阴影烘焙到 Light  Probe 上
9.5.4     LightProbes 照明和实时阴影的混合
9.6        烘焙一个色彩丰富的场景
9.7        在自己的材质中使用 LightProbes 照明
9.7.1     为一个 Forward 渲染路径的材质计算 LightProbes 照明
9.7.2     使用 ShadeSH9 函数进行计算
9.7.3     在一个 Surface Shader 中进行计算

第三篇 阴影 Shadows

第十章 平面阴影
10.1        第一种情形,平行光的投影
10.1.1     对平行光投影的考虑
10.1.2     进出阴影接受平面的矩阵
10.1.3     在 Shader 中使用三角形相似计算阴影
10.2        第二种情形,点光源的投影
10.2.1     光源的方向矢量
10.3        阴影的淡出
10.3.1     有效利用计算平面阴影过程中的数据
10.3.2     潜在的问题

第十一章 球体的阴影
11.1        平行光对球体的投影
11.1.1     投影球体的信息
11.1.2     使用相似三角形计算投影
11.2        阴影的淡入淡出
11.2.1     可以计算到的数据
11.3        点光源对球体的投影

第十二章 体积阴影
12.1        将顶点沿某一方向挤出
12.1.1     在 Vertex  Shader 中操作
12.1.2     判断顶点向光还是背光
12.2        从 Volumes 中找到阴影区域
12.2.1     两次挤出
12.2.2     计算出阴影区域
12.2.3     渲染阴影
12.2.4     需要注意的问题

第十三章 阴影映射
13.1        灯光空间和相机空间
13.1.1     观察两个空间
13.1.2     两个视角的 Z 深度
13.1.3     渲染 Z 深度的材质
13.2        投射 Z 深度
13.2.1     准备灯光视角的投影矩阵
13.2.2     在材质中计算投影后的 Z 深度
13.3        比较 Z 深度
13.3.1     比较 Z 深度的材质
13.3.2     Z 精度引起的问题
13.3.3     增加 Z 的精度
13.3.4     对 Z 进行偏移

第十四章 内置的阴影
14.1        投射阴影
14.1.1     使用 ShadowCaster 投射阴影
14.1.2     ShadowCaster 里都做了什么
14.1.3     写一个自己的 ShadowCaster
14.1.4     改变 ShadowCaster 的行为
14.1.5     阴影和 FallBack 机制
14.2        接受阴影
14.3        Surface  Shader 和阴影
14.3.1     Surface  Shader 的阴影和 FallBack
14.3.2     Surface  Shader 里的灯光参数和阴影
14.3.3     Surface  Shader 对 Forward 渲染路径下阴影的支持

第四篇 Unity 中的各种 Shader 和效果

第十五章 对各种 Pass 通用的指令开关
15.1        使用 LOD 在运行时决定材质
15.1.1     材质的 LOD
15.1.2     运行时设定单个材质的 LOD
15.1.3     设定全局所有材质的 LOD
15.1.4     Unity 内置的 LOD 层级
15.2        渲染队列
15.2.1     标签 Queue 和渲染顺序
15.2.2     渲染队列和决定空间位置的判断 ZTest
15.2.3     Unity 中内置的渲染队列
15.3        透明的产生
15.3.1     AlphaTest 和 8 种比较条件
15.3.2     动态生成用于测试 AlphaTest 的 8 种 Shader
15.3.3     动态生成 Shader 的内容
15.3.4     结合 AlphaTest 测试和 Blend 操作
15.4        混合操作
15.4.1     什么是 Blend 操作
15.4.2     动态生成测试用的 Shader
15.4.3     生成的 Shader 的内容
15.4.4     检视不同的 Blend 操作
15.4.5     针对 Blend 操作的 BlendOp 选项
15.4.6     动态生成带 BlendOp 选项的 Shader
15.4.7     生成 Shader 的内容
15.4.8     检视 BlendOp 操作
15.5        使用通道遮罩
15.5.1     ColorMask 的作用
15.5.2     检视 ColorMask
15.5.3     一个使用 ColorMask 产生形体遮罩的例子
15.6        深度测试
15.6.1     存取场景的 Z  Buffer
15.6.2     RenderType 标签和生成 Z  Buffer 的关联
15.6.3     Unity 中内置的 RenderType 值
15.6.4     Forward 渲染路径下的七种 ZTest
15.6.5     Deferred 渲染路径下的 ZTest
15.7        对 Z 深度的偏移 Offset
15.7.1     干预正常 Z 测试测试的手段
15.7.2     通过动态生成 Shader 改变 Offset 的参数
15.7.3     观察 Offset  在不同应用条件下的表现
15.8        面的剔除操作 Cull
15.9        贴图坐标的自动生成
15.9.1     ObjectLinear 和等价的 Cg 代码
15.9.2     EyeLinear 和等价的 Cg 代码
15.9.3     SphereMap 和等价的 Cg 代码
15.9.4     CubeReflect 和等价的 Cg 代码
15.9.5     CubeNormal 和等价的 Cg 代码
15.10      抓屏操作 GrabPass
15.10.1   如何使用 GrabPass
15.10.2   一个模拟曲面反射的例子
15.11      雾效
15.11.1   Fog 和 Unity 的三种实现
15.11.2   材质中对 Fog 的控制
15.11.3   实现自己的 Fog

第十六章 固定管线
16.1        Unity 中固定管线的基本形态
16.1.1     基本形态
16.1.2     照明相关的 Material 块

16.1.3     处理纹理的 SetTexture 块
16.1.4     基本形态的另一种写法
16.1.5     Combine 语句
16.2        使用顶点色
16.2.1     使用 ColorMaterial
16.2.2     通过 Bind 来绑定顶点色
16.3        在固定管线中使用光照贴图
16.4        嵌套 Cg 代码

第十七章 Surface  Shader
17.1        VertexLit 渲染路径下的 Surface  Shader
17.1.1     一个分析的策略
17.1.2     一个检视材质
17.1.3     检视 Surface Shader 和 Forward 渲染路径关系的两个材质
17.1.4     测试用的场景
17.1.5     检视结果:不独立支持 VertexLit 渲染路径
17.1.6     检视结果:对 Forward 渲染路径的支持条件
17.2        Deferred 渲染路径下的 Surface  Shader
17.2.1     设计检视的策略和相关 Shader
17.2.2     检视结果:Surface  Shader 对 Deferred 渲染路径的支持条件
17.3        Forward 渲染路径下的 Surface  Shader
17.3.1     Cg 代码完全体
17.3.2     最简形式的等价 Cg 代码
17.3.3     Cg 代码中对光照贴图的支持
17.3.4     一个验视自动生成的 ForwardBase 的场景
17.3.5     自动生成的 ForwardAdd
17.3.6     参数 noambient 和 novertexlights
17.3.7     参数 approxview 和 halfasview
17.3.8     在 Forward 渲染路径下透明和混合模式的参数
17.3.9     加强 Forward 渲染路径下效果的参数
17.4        Deferred 渲染路径下的 Surface  Shader
17.4.1     自动产生的 PrePassBase 和 PrePassFinal
17.4.2     PrePassBase 都做了什么
17.4.3     LightBuffer 里的东西
17.4.4     计算_LightBuffer 所使用的材质
17.4.5     PrePassFinal 的工作
17.4.6     FallBack 和 Surface  Shader 阴影的产生
17.4.7     精简用的参数
17.4.8     vertex,finalcolor 函数和 addshadow 选项
17.4.9     decal 参数

第十八章 凹凸材质
18.1        切空间
18.2        凹凸贴图

18.2.1     计算到切空间的矩阵
18.2.2     Unity 中法线贴图的压缩格式
18.2.3     另一种使用切空间矩阵的方法
18.2.4     Unity 对切空间计算的支持
18.2.5     解压缩法线贴图的函数 UnpackNormal()
18.2.6     在切空间中计算高光
18.2.7     Surface Shader 和切空间
18.3        视差映射
18.3.1     视差映射和它的别名
18.3.2     一个使用灰度图来偏移 UV 的材质
18.3.3     结合法线贴图
18.3.4     用视角来决定 UV 偏移
18.3.5     一个完整的实现
18.4        地势映射
18.4.1     视差映射的极限和 Relief  Mapping 的出世
18.4.2     Relief Mapping 的算法
18.4.3     一个完整的实现

第十九章 卡通材质
19.1        描边
19.1.1     沿法线挤出轮廓
19.1.2     容易产生的问题
19.1.3     在视空间中挤出
19.1.4     顶点位置的另一个含义
19.1.5     调和法线和顶点方向的简单方案
19.1.6     对顶点方向指向的判断
19.1.7     不仅仅是轮廓
19.1.8     通过 Z 偏移来描边
19.2        卡通着色
19.2.1     对光照进行离散化
19.2.2     使用 2D 贴图重新映射光照

第二十章 镜面材质
20.1        镜像一个相机
20.1.1     镜子里的世界和我的计划
20.1.2     在脚本中对位置和角度进行镜像
20.1.3     需要注意的地方
20.2        使用镜像相机来渲染,投影
20.2.1     镜子 Shader 的工作:采样被投影的渲染结果
20.2.2     脚本的工作:渲染镜像相机和设置投影矩阵
20.3        镜像相机的近剪切平面和倾斜矩阵
20.3.1     调节近剪切平面
20.3.2     使用倾斜矩阵微调视锥体

第二十一章 SSS 半透明材质
21.1        什么是 SSS 材质
21.2        SSS:复杂的和简单的

第二十二章 体积雾
22.1        距离的表达:以场景为背景的体积雾
22.1.1     我们需要计算那些东西
22.1.2     使用一个 Pass 来完成所有的计算
22.1.3     黑色的雾效
22.2        厚度的表达:物体本身厚度所形成的体积雾
22.2.1     必须要计算的两个数据
22.2.2     在 Unity 中使用一个 Pass 来完成所有计算

第二十三章 Wrap  Model 新解
23.1        一个可调节的 Wrap 光照模型
23.2        另一种实现途径
23.2.1     基于另一种构想的 Wrap
23.2.2     在 Shader 中实现这种构想
23.2.3     进一步的变通

第二十四章 面积光
24.1        线光源
24.1.1     点,线,面
24.1.2     如何理解一个线光源
24.1.3     通过脚本传递线光源的几何信息到 Shader 中
24.1.4     在 Shader 中计算线光源的照明
24.1.5     线光源的辐射方向
24.1.6     线光源的衰减
24.2        面积光源
24.2.1     面积光和线光源的不同
24.2.2     通过脚本设定面积光的几何特性
24.2.3     在 Shader 中计算面积光
24.2.4     和 Unity 默认照明的整合

第二十五章 体积光
25.1        体积光和体积阴影的关系
25.1.1     什么是体积光
25.1.2     体积光和体积阴影
25.2        实现体积光
25.2.1     在 Shader 中表现体积光
25.2.2     脚本的帮助

第二十六章 材质替代渲染 Shader  Replacement
26.1        Camera 和场景物体的渲染消息
26.1.1     检视相机的渲染相机发送顺序
26.1.2     检视物体的渲染消息发送顺序
26.1.3     相机和物体的渲染消息先后顺序
26.1.4     存在两个相机时的渲染消息
26.1.5     最后能改变 Cull 操作结果的地方:OnPreCull
26.1.6     最后能设置材质数据的地方:OnPreRender
26.2        Camera  的渲染方法
26.2.1     Render 方法会激活的渲染消息
26.2.2     RenderWithShader 方法会激活的渲染消息
26.3        如何使用 RenderWithShader 方法
26.3.1     场景中标签值不同的 5 个 Shader
26.3.2     调用 RenderWithShader 方法的脚本
26.3.3     替换用的 5 个 Shader
26.3.4     检视 RenderWithShader 方法的效果
26.3.5     使用 SubShader 组织替代材质
26.3.6     如何设置替代材质的属性
26.3.7     将结果输出的到屏幕上
26.4        SetReplacementShader 和 ResetReplacementShader 方法
26.4.1     与 RenderWithShader 方法的异同

第二十七章 后期效果 Image  Effects
27.1        Graphics 的两个方法
27.1.1     与 Camera 渲染方法的不同
27.1.2     Blit 方法的简单示例
27.1.3     使用 BlitMultiTap 方法进行多重采样
27.2        一个简单的 Color  Correction
27.2.1     调色用的脚本
27.2.2     调色用的 Shader
27.2.3     更高效的做法
27.3        景深
27.3.1     用于模糊图像的 Shader
27.3.2     在脚本中进行纵横两次模糊操作
27.3.3     进行混合操作的脚本
27.3.4     进行混合操作的 Shader
27.3.5     提供一个可调节参数出来
27.4        轮廓检测
27.4.1     用脚本索要场景的 Z 深度和法线
27.4.2     在 Shader 中进行边缘检测
27.5        扭曲
27.5.1     通过 UV 操作扭曲图像的 Shader
27.5.2     限定扭曲的区域
27.5.3     使用物体来做遮罩
27.6        运动模糊
27.6.1     如何记录运动轨迹
27.6.2     实现运动模糊的 Shader
27.6.3     用于完成整个过程的脚本
27.6.4     另一种方法:通过 Alpha 和帧的 Blend 操作来实现
27.7        噪波
27.7.1     根据 Z 深度来混合噪波
27.7.2     根据明暗程度来混合噪波
27.8        色彩的溢出
27.8.1     色彩溢出的算法考量
27.8.2     实现色彩溢出的采样计算

第二十八章 地形 Terrain
28.1        地表的材质
28.1.1     地面纹理的控制贴图
28.1.2     如何自定义地表材质
28.1.3     如何在地表上使用更多的纹理贴图
28.2        花草的材质
28.2.1     应用于非 Billboard 类型花草的材质
28.2.2     Terrain 引擎传入的数据
28.2.3     应用于 Billboard 类型花草的材质
28.2.4     自定义 Detail  Mesh 会使用的材质
28.3        树木的材质
28.3.1     应用于树木的 2D  Billboard 模式的材质
28.3.2     对 3D 形态的树木进行着色的材质
28.3.3     应用 Unity 计算的 Occlusion

第二十九章 投影
29.1        Unity 的 Projector
29.1.1     Projector 中的材质被执行的顺序
29.1.2     如何写 Projector 使用的材质
29.1.3     控制投影淡进淡出的矩阵
29.2        实现自己的投影 Projection
29.2.1     设定投影矩阵的脚本
29.2.2     采样投影的材质
29.2.3     直接投影到屏幕上
29.2.4     模拟 GUITexture
29.3        模拟粒子的 Billboard 效果
29.3.1     使用 Shader 将物体面向相机
29.3.2     保持旋转角度

第五篇    Shader 的组织和优化

第三十章 Shader 的组织和复用
30.1        写你自己的 cginc 文件
30.1.1     Unity 的 UnityCG.cginc 文件
30.1.2     定义自己的 cginc 文件
30.1.3     使用自定义的 cginc 文件
30.2        通过 UsePass 来复用
30.2.1     定义自己要复用的 Pass
30.2.2     复用这些 Pass
30.3        定义自己的 Shader 关键字
30.3.1     使用关键字改变 Shader 的行为
30.3.2     定义自己的 Shader 关键字
30.4        使用 multi_compile 编译 Shader 的多个版本
30.4.1     使用 multi_compile 实现多次编译
30.4.2     在脚本中选择 Shader 的版本
30.5        关于 Unity 对 DX 所带来的问题

第三十一章 你所必需知道的渲染概念
31.1       逐顶点计算和逐像素计算
31.1.1     逐顶点计算
31.1.2     逐像素计算
31.1.3     如何在这两个概念中取舍
31.2        Draw Call 的指标意义
31.2.1     Draw Call 的概念
31.2.2     正确理解 Draw  Call 对你开发应用的意义
31.2.3     Batching 的概念和 Unity 为优化 Draw  Call 所做的工作
31.2.4     为了优化 Draw  Call,你可以做哪些工作
31.3        利用渲染队列的技巧
31.3.1     渲染队列的概念
31.3.2     设置 Render  Queue 的技巧

第三十二章 基于渲染路径的优化
32.1        VertexLit 渲染路径下的优化
32.1.1     VertexLit 渲染路径的特点
32.1.2     合理的光照计算
32.2        Forward 渲染路径下的优化
32.2.1     Forward 渲染路径的特点
32.2.2     合理的光照计算
32.3        Deferred 渲染路径下的优化
32.3.1     Deferred 渲染路径的特点
32.3.2     合理的灯光布局

第三十三章 移动平台上的优化
33.1        移动平台的特点
33.2        一些指令的运算速度概念
33.3        顶点数量的考虑
33.4        贴图问题
33.5        数据类型使用方式
33.6        变量的使用

案例图片:

2013-02-13_125433.png

4.png

6.png

1.png

1.png

3.png

2013-02-23_180941.png

SSS.png







作者: ku    时间: 2013-8-14 21:16
这书哪卖的?是中国翻译的吗?如果是中国程序员写的我肯定不会买,因为他们只会抄袭外国教程,shader的视频教youtube有一系列,你可以买vpn看一个月或下载
作者: ku    时间: 2013-8-14 21:16
当当上没有这本书,亚马逊上能有不

作者: jjiezheng    时间: 2013-8-14 21:18
还是要支持下的
作者: 艾西格亚    时间: 2013-8-14 21:18
这是还没发行的新书
作者: Lucifer    时间: 2013-8-14 22:00
ku 发表于 2013-8-14 21:16
这书哪卖的?是中国翻译的吗?如果是中国程序员写的我肯定不会买,因为他们只会抄袭外国教程,shader的视频 ...

非常不幸,我(上面那本书的作者)是河南人,北京上的学,在新疆写的书,然后又找的北京的出版社。没有出过国,离边境线最近的地方是在塔县的红旗拉甫,不过还没拍照片。所以这个离国境线最近的证据也没办法证明
作者: ku    时间: 2013-8-14 22:20
Lucifer 发表于 2013-8-14 22:00
非常不幸,我(上面那本书的作者)是河南人,北京上的学,在新疆写的书,然后又找的北京的出版社 ...

我无意批评或诋毁你或某一个中国Coder,但我真心不承认或认可任何一个中国籍的所谓大牛,即使他是N年架框师,我也只认为他是为了吃那口饭不得不干的搬砖人员,中国籍程序员永远千年老二,不管是开源程序还是产品或是教材书籍永远是人家国外有写成的或出版了,中国人借鉴了,山寨了,引用了,而且恬不知耻的在各种开发者大会上作报告作演讲,让我一个中国被外国同人说红不知道多少回脸。

中国程序员就像中国人一样没有信仰,没有想象力,没有创造力,悲哀啊,我买的书箱多是中文,但一堆不顶人家外国的一两本,即使人家是英文的都比那些中国胡乱借鉴的山寨要好太多了,即使它的价格是国产书的2,3倍我也愿意买国外的,国产的就是垃圾,他不知道从来copy来了讲给读者他都不能深究其中原理,垃圾,shift

就像没有任何一本电脑方面的技术被从中文翻译成外国任何一种文字的现实一样,中国的就是最烂的,我认可用google去翻译外国的电子书也不买中国的烂书,狗屎
作者: ku    时间: 2013-8-14 22:29
本帖最后由 ku 于 2013-8-14 22:32 编辑

说到痛处 鸡冻了,不好意思哦,建议这个书的订价在300元人民币以上,专业工具书本身受众就少,想了解它的人必要是高端人员,所以便宜了他们会不认可的,高价还有另一个好处,就是防止盗版,淘宝上的电子书店可以制作特定的电子书的,你懂的,便宜了,估计不出3个月就电子版漫天飞了
作者: Lucifer    时间: 2013-8-14 22:35
ku 发表于 2013-8-14 22:20
我无意批评或诋毁你或某一个中国Coder,但我真心不承认或认可任何一个中国籍的所谓大牛,即使他是N年架框 ...

对你悲惨遭遇深表同情,但是如果你不懂Shader,或者说对Unity的整个渲染框架到目前为止还是很不了解,晕晕乎乎,那就等这本书吧。
当然,希望你说的那个国外的视频教程已经教会了你认为你需要的东西。那个视频我没见过,即使fan墙,我这网速也够呛.
当然,在这本书的写作过程中,我在Unity的官网上问够了足够的问题,在那里我的网名是1314Lucifer,在ShaderLab论坛里
作者: ku    时间: 2013-8-14 22:43
Lucifer 发表于 2013-8-14 22:35
对你悲惨遭遇深表同情,但是如果你不懂Shader,或者说对Unity的整个渲染框架到目前为止还是很不 ...

期待你的大作,希望试读 前言,一,二,三章节,然后决定是否买
作者: 王者再临    时间: 2013-8-14 23:42
Shader的书真是够少,是那家出版社如此有前瞻性
作者: 岭南太狩-辉少    时间: 2013-8-15 00:00
期待发行,京东可以购买么?
作者: Lucifer    时间: 2013-8-15 07:29
王者再临 发表于 2013-8-14 23:42
Shader的书真是够少,是那家出版社如此有前瞻性

人民邮电出版社
作者: Lucifer    时间: 2013-8-15 07:31
岭南太狩-辉少 发表于 2013-8-15 00:00
期待发行,京东可以购买么?

这个,我会和出版社提要求的
作者: may    时间: 2013-8-15 09:08
这个估计有多少页?全彩色吗?
作者: hongchangchun    时间: 2013-8-15 09:08
期待,预订一本,希望能给我打个半折。
作者: dannyGame2012    时间: 2013-8-15 09:27
期待中啊!!!!!!!!!!
作者: Lucifer    时间: 2013-8-15 10:15
may 发表于 2013-8-15 09:08
这个估计有多少页?全彩色吗?

大概400页,会为每一章设专门的彩插,当然如果出版社愿意定价到300,全彩也是没问题的
作者: may    时间: 2013-8-15 10:34
400页会不会少了些,看内容是很多啊
作者: dzspb    时间: 2013-8-15 10:54
这个太棒了,正需要呢。谢谢!
作者: Lucifer    时间: 2013-8-15 11:40
may 发表于 2013-8-15 10:34
400页会不会少了些,看内容是很多啊

三级目录,所以比较长
作者: 徐徐的风    时间: 2013-8-15 15:33
期待ing.....
作者: zoeyun520    时间: 2013-8-16 09:23
啥时候出,定价多少?
作者: Lucifer    时间: 2013-8-16 10:22
zoeyun520 发表于 2013-8-16 09:23
啥时候出,定价多少?

要到十月份了
作者: nyjs5214    时间: 2013-8-16 17:55
Lucifer 发表于 2013-8-14 22:00
非常不幸,我(上面那本书的作者)是河南人,北京上的学,在新疆写的书,然后又找的北京的出版社 ...

看目录感觉很详细,应该很有用。作者能不能介绍下自己的主要经历!
作者: Lucifer    时间: 2013-8-17 11:17
nyjs5214 发表于 2013-8-16 17:55
看目录感觉很详细,应该很有用。作者能不能介绍下自己的主要经历!

去年中在被北京的时候,因为经常听到各个群里朋友抱怨不知如何下手Shader,我就注意到Unity关于Shader的文档虽然看似很大,但是仍然不足够让想自己动手写Shader的同学拥有足够多的信息,官网的ShaderLab论坛上,虽然高手较多,但是这些知识点分布在几万帖子中,非常分散,而且很不正式,都是世界各地网友的各种疑问的汇总。即使是在这里,关于一些基本的问题也没有得到回答,我知道的几个洋高手其实对一些基本的问题也是糊里糊涂。去年10月份我就辞职回新疆了,在朋友那里晃荡了几个星期后,就专心搞了几个月的时间写这本书。 写完这本书后,以前主管又把我叫到北京来了................  
你可能很好奇我为什么总到新疆去晃荡,这个这里不好回答你
作者: 1234567o    时间: 2013-8-17 18:20
有没有将Shader优化方面的知识,比如手机实用的Shader优化
作者: Lucifer    时间: 2013-8-17 20:52
1234567o 发表于 2013-8-17 18:20
有没有将Shader优化方面的知识,比如手机实用的Shader优化

那是必须的
作者: 王者再临    时间: 2013-8-17 21:28
最好是开放预订,然后统计一下,跟出版社弄个预订打折价
作者: heise    时间: 2013-8-18 19:35
总人一种中国人不能相信的赶脚
作者: poppig    时间: 2013-8-19 00:12
希望尽早出版
作者: Lucifer    时间: 2013-8-19 10:29
poppig 发表于 2013-8-19 00:12
希望尽早出版

我会天天催编辑的  教他加点人手
作者: 我不再年轻    时间: 2013-8-19 16:37
强烈支持咱中国人自己写的进阶书籍。其实老外写的那几本Unity书实在太过基础,没啥看头。很期待!
出了一定买本学习!
作者: 我不再年轻    时间: 2013-8-19 16:41
顺便在这里请教一下Lucifer, 关于Pass一直有点糊涂.基本上是不是每个Pass意味着一次对全部场景的完整渲染过程? 那么是不是Multi-Pass效率很低?
Unity里能自己定义开启/关闭哪些Pass吗?
作者: Lucifer    时间: 2013-8-19 17:25
我不再年轻 发表于 2013-8-19 16:41
顺便在这里请教一下Lucifer, 关于Pass一直有点糊涂.基本上是不是每个Pass意味着一次对全部场景的完整渲染过 ...

你这个问题的确够....低级
一个Pass意味着一个Draw Call,只是对某一个物体在GPU上的一次渲染,
每一次DrawCall都意味着CPu要为GPu准备大量的数据,这是一个繁重的过程,所以一般优化时都会尽量减少DrawCall
作者: 我不再年轻    时间: 2013-8-19 17:42
呵呵,多谢回答我这么低级的问题 ;)
原来Pass和DrawCall是一一对应的!

以前每次想学CG或是HLSL,都对关于Pass, Technique的概念很含糊。一般书上好像都不屑于解释这种低级问题。比如到底Technique是什么?
现在学Unity4的Shader编程,是不是还是得老老实实学Shaderlab+CG, 那个Surface Shader是不是效率不行?
作者: 我不再年轻    时间: 2013-8-19 17:45
还有个关于您这本书的问题,书里好像没有关于Matrix的介绍, 是不是假设读者必须要有基础的Vector/Matrix的知识?
作者: Lucifer    时间: 2013-8-19 17:52
我不再年轻 发表于 2013-8-19 17:45
还有个关于您这本书的问题,书里好像没有关于Matrix的介绍, 是不是假设读者必须要有基础的Vector/Matrix的 ...

SUrface Shader有大量的开关,你可以关闭你不需要的东西
Matrix我的确有考虑,虽然没有写到书里,不过在工程文件里的确有关于Matrix的部分
到时可以看一下
作者: 我不再年轻    时间: 2013-8-19 18:11
适合阅读的对象: 这本书的面向对象是 Unity3D中高级程序员,Unity3D特效开发


是不是像我这样的设计师要掌握shader还是很困难的。自己自学了一些计算机图形学的书,能看懂基本的OpenGL程序,但对Matrix算术懵懵懂懂,对渲染管线也是感觉懂一些但又很糊涂。估计我这样的游戏界的设计师还不算少。不知Lucifer能否推荐一些资料,好在您这本书出版前给自己先做些准备功课。

多谢!
作者: Lucifer    时间: 2013-8-20 10:09
我不再年轻 发表于 2013-8-19 18:11
是不是像我这样的设计师要掌握shader还是很困难的。自己自学了一些计算机图形学的书,能看懂基本的OpenGL ...

其实我的线型代数也不是很好,在Cg代码中,你很少需要对matrix进行细微的操作,一般都是MVP这些被引擎县城提供的矩阵
线型代数可以很复杂,不过你只需要知道一些基本的概念就可以对付Shader中的所有计算了
你可以上网搜一下,我记得在Unity的Frum论坛上,好像有个叫Jessy的家伙,对矩阵的行列进行了一个比较形象的解说,你可以搜下这个叫Jessy的家伙的发言记录
作者: dzspb    时间: 2013-8-20 10:38
ku 发表于 2013-8-14 22:20
我无意批评或诋毁你或某一个中国Coder,但我真心不承认或认可任何一个中国籍的所谓大牛,即使他是N年架框 ...

     忍不住还是想说两句。把中国程序员说得这么不堪只知道抄袭,那我很好奇类似于微软亚洲研究院里的纯粹中国人也有不少在Sigraph发了很多论文,而且对于比如directx和kinect做了不少底层工作的,他们也都是抄袭的?虽然可能他们是最顶尖的一小群,但也是中国人没错吧? 用不着因为所谓的“被外国人说红脸”就在这里对国人彻底否定。
     所谓多少中国人写的技术书也比不上国外一两本,或许你说的没错。但是请问所有的人都能直接看国外原著么?你的水平够高没问题,是否也该为英文水平不够的人考虑一下? 如果嫌中国人连翻译国外的都翻译不好,那请问你自己又做了什么?是否能麻烦你翻译出水平够高的来看看?
     我无意针对某个人,但是国内各种论坛里动辄就骂来骂去的够多了,希望这种风气不要也被带到这个论坛里。 对于一本还没看过的书上来就发表这样的一通评论,实在是毫无意义。
     另外最后也对这本书的作者表示一下感谢和期待,毕竟一本好的“中文的”unity shader书籍是很多人都盼望的。
     
作者: 我不再年轻    时间: 2013-8-20 11:08
Lucifer 发表于 2013-8-20 10:09
其实我的线型代数也不是很好,在Cg代码中,你很少需要对matrix进行细微的操作,一般都是MVP这些被引擎县 ...

多谢!
搜了搜, 这个Jessy七八千条帖子, 没找到您说的关于矩阵行列的解说.

能不能请Lucifer谈谈自己最开始是怎么学习图形/Shader编程的? 有没有推荐的书或网站之类的.
作者: ldragon    时间: 2013-8-21 08:42
希望快点儿出来~~
作者: Lucifer    时间: 2013-8-22 17:50
may 发表于 2013-8-15 09:08
这个估计有多少页?全彩色吗?

加上后来补的章节,要超过500页
作者: 我不再年轻    时间: 2013-8-22 18:58
价格定了没? 能不能在京东当当亚马逊上买到?

想第一时间入手
作者: Lucifer    时间: 2013-8-22 23:31
我不再年轻 发表于 2013-8-22 18:58
价格定了没? 能不能在京东当当亚马逊上买到?

想第一时间入手

还没有  编辑还要申呢
作者: alphatt    时间: 2013-8-23 15:13
国人终于出shader的书了!!!!!!!!!!!!!!!!
作者: lsermao    时间: 2013-9-10 16:27
ku 发表于 2013-8-14 22:29
说到痛处 鸡冻了,不好意思哦,建议这个书的订价在300元人民币以上,专业工具书本身受众就少,想了解它的人 ...

虽然你说的比较激动,但我还是比较同意你的看法。
中国最好的时代已经过去了,中国的文艺复习已经是N年前的事情了。
文化已死,道德免不了沦丧,没有道德何来信仰?没有信仰,一切都扯蛋。
各行各业,都免不了,IT行业也不可能独善其身。
作者: ku    时间: 2013-9-10 17:20
dzspb 发表于 2013-8-20 02:38
忍不住还是想说两句。把中国程序员说得这么不堪只知道抄袭,那我很好奇类似于微软亚洲研究院里的纯 ...

难道预防针要在得病了以后打?建议你先上youtube看看人家免费的Shader视频教程,然后再来看这本书,看看哪个更有含金量,盲目永远是无知者的向导
作者: ku    时间: 2013-9-10 17:22
dzspb 发表于 2013-8-20 02:38
忍不住还是想说两句。把中国程序员说得这么不堪只知道抄袭,那我很好奇类似于微软亚洲研究院里的纯 ...

你提到了英文水平如何?请问学shader编程的人不会英文?你认为这可能吗?一个程序员不会英文?你是美工出身吧,希望你去问任何一位Coder,Coder的生存三条件是什么?不会英文?真是奇葩言论
作者: yangbo8088    时间: 2013-9-11 11:20
这书怎么还没发布
作者: 宁唯是宁唯    时间: 2013-9-11 15:12
出来出来
作者: Lucifer    时间: 2013-9-11 15:29
宁唯是宁唯 发表于 2013-9-11 15:12
出来出来

编辑说这两天会把初审意见反馈给我 到时还有复审,再折腾一下
作者: bill2narkii    时间: 2013-9-12 14:33
快啊,期待大作啊
作者: bill2narkii    时间: 2013-9-12 15:50
内容感觉相当的不错啊,快快快
作者: 22353255    时间: 2013-9-12 17:23
据说鱼松MOMO那本其实是翻译国外的一本教程。
希望这本给力
作者: Lucifer    时间: 2013-9-12 19:37
22353255 发表于 2013-9-12 17:23
据说鱼松MOMO那本其实是翻译国外的一本教程。
希望这本给力

必须的
作者: wucnj    时间: 2013-9-14 09:25
支持作者!!!
作者: dzspb    时间: 2013-9-17 12:27
ku 发表于 2013-9-10 17:22
你提到了英文水平如何?请问学shader编程的人不会英文?你认为这可能吗?一个程序员不会英文?你是美工出 ...

确实奇葩,照你这理论全世界编程大牛全是得拿英文交流才行了。 还是那句话,你自己做不到什么贡献无所谓,就不要别人做了贡献自己还做出高高在上的姿态做批判。
作者: zoeyun520    时间: 2013-9-23 16:31
还没点消息吗?
作者: liu1809    时间: 2013-9-25 19:48
Lucifer 发表于 2013-8-14 22:35
对你悲惨遭遇深表同情,但是如果你不懂Shader,或者说对Unity的整个渲染框架到目前为止还是很不 ...

看来也是个dota大神呀 等出版了必买   一直想学shader呢
作者: may    时间: 2013-9-27 00:19
等的花儿都谢了。。
作者: herry7x    时间: 2013-9-27 08:37
支持一下,这书什么时候发售啊?
作者: ZackD    时间: 2013-9-27 14:57
听说是10月底的样子
作者: 3dgo    时间: 2013-9-27 15:18
不错不错,等书出来一定支持
作者: 一苇渡江    时间: 2013-9-27 18:01
可以考虑看看
作者: tracan    时间: 2013-9-30 20:59
找不到这书
作者: Lucifer    时间: 2013-10-1 13:04
tracan 发表于 2013-9-30 20:59
找不到这书

还没完全搞定呢,要到10月底了吧
作者: zoeyun520    时间: 2013-10-8 08:53
Lucifer 发表于 2013-10-1 13:04
还没完全搞定呢,要到10月底了吧

10月底审核完还是10月底上市啊?
作者: luyuntst    时间: 2013-10-8 23:11
顶老大,呵呵,黑牛啊啊
作者: Lucifer    时间: 2013-10-9 14:36
zoeyun520 发表于 2013-10-8 08:53
10月底审核完还是10月底上市啊?

刚刚问过,文字编辑在做最后的加工,我这边应该不会再改了,编辑和我说,10月底会争取把预订链接发出来
作者: 天空小飞龙    时间: 2013-10-10 21:14
这书好呀
作者: ldragon    时间: 2013-10-11 14:46
等的花儿都谢了....
作者: 王者再临    时间: 2013-10-14 02:37
Lucifer 发表于 2013-10-9 14:36
刚刚问过,文字编辑在做最后的加工,我这边应该不会再改了,编辑和我说,10月底会争取把预订链接发出来 ...

总页数跟定价出来了没啊?
作者: Lucifer    时间: 2013-10-14 10:43
本帖最后由 Lucifer 于 2013-10-14 10:44 编辑
王者再临 发表于 2013-10-14 02:37
总页数跟定价出来了没啊?

我最后发过去的稿件:文字部分是458页,我要求的彩插是47页,最终看出版社的排版,应该在500页以上
上次和编辑谈的定价是79
作者: ldragon    时间: 2013-10-14 11:32
Lucifer 发表于 2013-10-14 10:43
我最后发过去的稿件:文字部分是458页,我要求的彩插是47页,最终看出版社的排版,应该在500页以上
上次和 ...

俺们买有优惠不?
作者: 康平梦    时间: 2013-10-14 16:20
还没出来奥????
作者: zoeyun520    时间: 2013-10-15 12:01
预定打折吗
作者: taniswu318    时间: 2013-10-15 18:41
这本书是本论坛的大牛写的?到时候拜读一下~正需要点资料学SHADER
作者: ZackD    时间: 2013-10-18 10:14
我觉的到印刷出来到到上架估计是下个月了
作者: odinxu    时间: 2013-10-20 21:58
非常期待啊!!!

如果有全彩版本就更好了。关于 shader 这块,没有足够彩色配图,表达的效果差非常多。
建议是多加些彩图,甚至是全彩印刷。

对Unity3D研究深入到这个技术层面的,多花两三百块钱没有问题的。

作者: sqhua    时间: 2013-10-21 10:09
国人的书编著的大多不好,所以更应该支持这些一线的,有良心的原创人员。
作者: 岭南太狩-辉少    时间: 2013-10-21 10:39
sqhua 发表于 2013-10-21 10:09
国人的书编著的大多不好,所以更应该支持这些一线的,有良心的原创人员。 ...

嗯 编著两字很体贴,主要是编,与其说是编,不如说是网络文摘。希望这本书带来惊喜。
作者: Lucifer    时间: 2013-10-21 11:31
odinxu 发表于 2013-10-20 21:58
非常期待啊!!!

如果有全彩版本就更好了。关于 shader 这块,没有足够彩色配图,表达的效果差非常多。

不反对
作者: ityuany    时间: 2013-10-21 16:35
请问具体是几号能发售?  
作者: herry7x    时间: 2013-10-22 12:46
问下这书什么时候能有卖的啊?
作者: 445207638    时间: 2013-10-23 06:21
啥时候出版?速度
作者: ZackD    时间: 2013-10-23 20:32
貌似要到下个月初啊
作者: zoeyun520    时间: 2013-10-24 09:00
还没消息啊
作者: 狂风大尉    时间: 2013-10-27 19:19
望穿秋水啊。。没下文
作者: ldragon    时间: 2013-10-28 08:44
十月底啦~~~再不出来就让作者写欠条等出来了每人免费发一本,让你吊我们胃口
作者: zoeyun520    时间: 2013-10-28 12:34
11月了11月了11月了
作者: taniswu318    时间: 2013-10-28 16:49
11月都要来了啊……
作者: Lucifer    时间: 2013-10-28 19:49
ldragon 发表于 2013-10-28 08:44
十月底啦~~~再不出来就让作者写欠条等出来了每人免费发一本,让你吊我们胃口 ...

只能打欠条了 最快也要下星期排版出片
作者: fcking    时间: 2013-10-29 09:54
Lucifer 发表于 2013-10-28 19:49
只能打欠条了 最快也要下星期排版出片

关注你的书n久了!!!求欠条!
作者: luyuda    时间: 2013-10-29 10:26
Lucifer 发表于 2013-10-28 19:49
只能打欠条了 最快也要下星期排版出片

额。。。老大。。每天关注啊。。肿么总是跳票啊。。。。出版社不靠谱啊
作者: leanchen89    时间: 2013-10-29 12:27
  先给出版社一点钱打通关系吧,不然他们肯定会一压再压的。这都多久了哇,正常速度都该印刷第二次了。再等黄花菜都发霉了
作者: 康平梦    时间: 2013-10-29 12:49
到底啥时候出啊。。。。
作者: akb48xpc    时间: 2013-10-29 15:43
是啊,我就等着这本书学习Shader了快出哪
作者: leon548534    时间: 2013-10-30 12:27
看目录内容颇丰,国内目前关于Unity的书太少了,而且各种教程也鱼龙混杂,很多看了也不是特受益,书什么时候出




欢迎光临 纳金网 (http://c-www.narkii.com/club/) Powered by Discuz! X2.5