返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:

  • 正版新书]UNITY 3D SHADERLAB开发实战详解(第3版)郭浩瑜 张鹤9
  • 全店均为全新正版书籍,欢迎选购!新疆西藏青海(可包挂刷).港澳台及海外地区bu bao快递
    • 作者: 郭浩瑜 张鹤著 | 郭浩瑜 张鹤编 | 郭浩瑜 张鹤译 | 郭浩瑜 张鹤绘
    • 出版社: 人民邮电出版社
    • 出版时间:2018-01-01
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    君凤文轩图书专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品分类

    商品参数
    • 作者: 郭浩瑜 张鹤著| 郭浩瑜 张鹤编| 郭浩瑜 张鹤译| 郭浩瑜 张鹤绘
    • 出版社:人民邮电出版社
    • 出版时间:2018-01-01
    • 版次:3
    • 印刷时间:2019-11-01
    • 字数:427千字
    • 页数:251
    • 开本:16开
    • ISBN:9787115505408
    • 版权提供:人民邮电出版社
  • 作者: 郭浩瑜 张鹤
  • 著: 郭浩瑜 张鹤
  • 装帧: 平装
  • 印次: 暂无
  • 定价: 79
  • ISBN: 9787115505408
  • 出版社: 人民邮电出版社
  • 开本: 16开
  • 印刷时间: 2019-11-01
  • 语种: 中文
  • 出版时间: 2018-01-01
  • 页数: 251
  • 外部编号: 庄村60520
  • 版次: 3
  • 成品尺寸: 暂无

  • 目  录

    第 1篇 初识庐山真面目—

    Unity 3D着色器

    第 1章 着色器的概念和渲染流水线 2

    1.1 着色器的概念 2

    1.1.1 虚拟世界中的光明和色彩 2

    1.1.2 游戏开发人员的* 2

    1.1.3 着色器简史 2

    1.1.4 着色器的实例化 3

    1.1.5 着色器的实现语言 3

    1.1.6 Unity中的着色器编程 4

    1.2 渲染流水线 4

    1.2.1 渲染流水线简介 4

    1.2.2 渲染流水线阶段 5

    1.3 渲染流水线执行阶段 6

    1.3.1 输入装配阶段 6

    1.3.2 顶点着色器 8

    1.3.3 细化阶段 8

    1.3.4 几何着色器 9

    1.3.5 流输出阶段 10

    1.3.6 片元着色器 10

    1.3.7 输出合并阶段 11

    1.4 其他一些细节 11

    1.4.1 延迟渲染和前向渲染 11

    1.4.2 批次合并渲染 13

    第 2章 渲染原理和图形存储器 14

    2.1 渲染原理 14

    2.1.1 立即模式渲染 14

    2.1.2 基于区块的(延迟)渲染 16

    2.2 图形存储器 18

    2.2.1 GPU的存储系统层次体系 19

    2.2.2 数据结构 20

    2.2.3 渲染所需的数据结构 23

    2.2.4 合并批次渲染原理回顾 23

    第3章 Unity中着色器的形态 25

    3.1 Unity通过ShaderLab来组织着色器 25

    3.1.1 关键字Shader 25

    3.1.2 使用子着色器组织着色器的

    不同实现 25

    3.1.3 子着色器的重要标签 25

    3.1.4 子着色器中的Pass块 26

    3.1.5 Pass块的标签及其名字的

    意义 26

    3.1.6 使用FallBack语句保证

    着色器的广泛适应性 27

    3.2 Unity支持的着色器编程语言 27

    3.3 Unity中着色器的3种形态 27

    3.3.1 固定流水线 27

    3.3.2 可编程着色器 28

    3.3.3 ShaderLab中的表面着色器 29

    3.4 着色器的数据接口—属性和uniform

    变量 31

    3.4.1 在Properties块中定义属性 31

    3.4.2 通过图形界面操作属性 31

    3.4.3 通过脚本操控属性 31

    3.4.4 矩阵—不能在属性块中

    定义的变量 32

    3.4.5 在Cg代码中使用属性 32

    第4章 着色器中用到的各种空间概念 33

    4.1 模型空间 33

    4.1.1 为什么用模型空间 33

    4.1.2 在脚本和着色器中进出模型

    空间 33

    4.2 世界坐标空间 33

    4.2.1 统一的坐标空间—世界坐标

    空间 33

    4.2.2 在脚本和着色器中进出世界

    坐标空间 34

    4.3 视空间 34

    4.3.1 渲染的需要—视空间 34

    4.3.2 在脚本和着色器中进出视

    空间 34

    4.4 空间的一块—视锥体 34

    4.5 剪切空间 35

    4.5.1 投影 35

    4.5.2 脚本和着色器中的投影矩阵 35

    4.5.3 验证NDC 35

    4.6 NDC之后 36

    第5章 基本的光照模型 37

    5.1 光源对物体照明的分类 37

    5.1.1 间接照明 37

    5.1.2 直接照明 37

    5.2 亮度的计算方式—光照模型 37

    5.2.1 漫反射和Lambert 37

    5.2.2 镜面高光和Phong 38

    5.2.3 半角向量和BlinnPhong 38

    第 2篇 让应用更炫彩—

    Unity中的照明

    第6章 第 一个执行的通道 42

    6.1 不同的LightMode被选择的顺序 42

    6.1.1 渲染路径和通道的LightMode标签 42

    6.1.2 设计可以检测渲染路径的

    材质 42

    6.1.3 设计便于检测渲染路径的

    场景 43

    6.1.4 观察那些渲染的通道 43

    6.2 3个渲染路径之外的处理方式 45

    6.2.1 LightMode的其他值 45

    6.2.2 设计检测用的材质 45

    第7章 前向渲染路径 47

    7.1 渲染物体—ForwardBase和

    ForwardAdd 47

    7.1.1 设计检测用的场景和材质 47

    7.1.2 ForwardBase和ForwardAdd的

    表现 48

    7.2 前向渲染路径下的光源 48

    7.2.1 设计检测用的材质 48

    7.2.2 光源的情况 48

    7.2.3 Unity如何为前向渲染路径

    设置光源 49

    第8章 基于光照贴图的烘焙照明 50

    8.1 烘焙的维度和属性矩阵 50

    8.2 光照贴图 50

    8.2.1 测试烘焙的场景 51

    8.2.2 烘焙之后的场景 52

    8.2.3 双光照贴图 52

    8.3 在效果和性能间进行权衡 52

    8.3.1 影响全局的Resolution选项 53

    8.3.2 单个物体的选项 53

    第9章 柔和的低频照明 55

    9.1 初识光照探头 55

    9.1.1 光照探头照明的优点 55

    9.1.2 检测光照探头照明的场景 55

    9.1.3 使用光照探头组进行管理 57

    9.1.4 烘焙场景光照信息到光照

    探头中 57

    9.1.5 对比光照探头照明和实时

    照明 58

    9.2 放置光照探头的注意事项 59

    9.2.1 必须形成一个体积 59

    9.2.2 单个光照探头必须处于采样

    光源的照射范围 59

    9.3 照明采样的Anchor Override 59

    9.3.1 动态更新光照探头 59

    9.3.2 基于线性插值的采样 59

    9.3.3 改变默认的插值位置 59

    9.4 光照探头照明和阴影 60

    9.4.1 光照探头和光照贴图的

    异同 60

    9.4.2 烘焙阴影时可能会犯的错误 61

    9.4.3 将静态物体的阴影烘焙到

    光照探头上 61

    9.4.4 光照探头照明和实时阴影的

    混合 62

    9.5 烘焙一个色彩丰富的场景 62

    9.6 在自己的材质中使用光照探头 63

    9.6.1 为前向渲染路径中的材质计算

    光照探头 63

    9.6.2 使用ShadeSH9函数 64

    9.6.3 在一个表面着色器中进行

    计算 65

    9.7 LPPV的设计目的 66

    9.7.1 LPPV是什么 66

    9.7.2 照明的场景 66

    第3篇 使应用更逼真—阴影

    第 10章 平面阴影 70

    10.1 平行光对平面的投影 70

    10.1.1 对平行光投影的考虑 70

    10.1.2 进出阴影接受平面的矩阵 70

    10.1.3 使用三角形相似计算阴影 71

    10.2 点光源对平面的投影 72

    10.3 阴影的淡出 73

    10.3.1 有效利用平面阴影计算

    过程中的数据 73

    10.3.2 潜在的问题 74

    第 11章 球体阴影 75

    11.1 平行光对球体的投影 75

    11.1.1 投影球体的信息 75

    11.1.2 使用相似三角形计算投影 75

    11.2 阴影的淡入/淡出 76

    11.3 点光源对球体的投影 77

    第 12章 体积阴影 78

    12.1 将顶点沿某一方向挤出 78

    12.1.1 在Vertex函数中操作 78

    12.1.2 判断顶点是向光还是背光 79

    12.2 从体积中找到阴影区域 79

    12.2.1 两次挤出 79

    12.2.2 计算出阴影区域 80

    12.2.3 渲染阴影 80

    12.2.4 需要注意的问题 80

    第 13章 阴影映射 82

    13.1 灯光空间和相机空间 82

    13.1.1 观察两个空间 82

    13.1.2 两个视角的Z深度 82

    13.1.3 渲染Z深度的材质 83

    13.2 投射Z深度 83

    13.2.1 准备灯光视角的投影矩阵 83

    13.2.2 在材质中计算投影后的Z

    深度 84

    13.3 比较Z深度 85

    13.3.1 比较Z深度的材质 85

    13.3.2 Z深度的精度引起的问题 87

    13.3.3 提高Z深度的精度 87

    13.3.4 对Z深度值进行偏移 88

    第 14章 内置的阴影 89

    14.1 Unity实时阴影的原理 89

    14.1.1 基本原理 89

    14.1.2 软阴影 89

    14.2 投射阴影 90

    14.2.1 使用ShadowCaster投射

    阴影 90

    14.2.2 在ShadowCaster里都做了

    什么 91

    14.2.3 写一个自己的ShadowCaster 91

    14.2.4 改变ShadowCaster的行为 92

    14.2.5 阴影和FallBack机制 92

    14.3 接受阴影 94

    14.4 表面着色器和阴影 94

    14.4.1 表面着色器的阴影和

    Fallback 94

    14.4.2 表面着色器里的灯光参数和

    阴影 95

    14.4.3 表面着色器对前向渲染路径下

    阴影的支持 95

    14.5 阴影的批处理 96

    14.5.1 批处理阴影的好处 96

    14.5.2 简单的Caster 97

    14.5.3 静态阴影的批处理 98

    14.5.4 动态阴影的批处理 100

    第4篇 Unity中的各种着色器

    第 15章 通道的通用指令开关 104

    15.1 使用LOD在运行时决定材质 104

    15.1.1 材质的LOD 104

    15.1.2 在运行时设定单个材质的

    LOD 104

    15.1.3 设定全局所有材质的

    LOD 105

    15.2 渲染队列 106

    15.2.1 标签队列和渲染顺序 106

    15.2.2 渲染队列和ZTest判断 107

    15.2.3 Unity中内置的渲染队列 107

    15.2.4 一个利用渲染队列的例子 107

    15.3 透明的产生 108

    15.3.1 Alpha检测和8种比较

    条件 108

    15.3.2 生成着色器的内容 108

    15.3.3 结合AlphaTest和Blend

    操作 109

    15.4 混合操作及其应用 110

    15.4.1 混合操作 110

    15.4.2 生成着色器的代码 110

    15.4.3 检测不同的混合操作 110

    15.4.4 BlendOp选项 111

    15.4.5 检测BlendOp操作 112

    15.4.6 两个使用Blend生成的

    效果 112

    15.5 使用ColorMask 114

    15.5.1 ColorMask的作用 114

    15.5.2 检测ColorMask 114

    15.5.3 一个使用ColorMask的

    例子 115

    15.6 深度测试 116

    15.6.1 存取场景的深度测试 116

    15.6.2 RenderType标签和与生成

    深度测试的关联 116

    15.6.3 内置RenderType的值 117

    15.6.4 前向渲染路径下的

    深度测试 117

    15.7 Z深度的偏移量 118

    15.7.1 干预正常深度测试的手段 118

    15.7.2 观察偏移量在不同应用

    条件下的表现 118

    15.8 面的剔除操作 118

    15.9 自动生成贴图的坐标 119

    15.9.1 ObjectLinear和等价的

    Cg代码 119

    15.9.2 EyeLinear和等价的

    Cg代码 120

    15.9.3 SphereMap和等价的

    Cg代码 121

    15.9.4 CubeReflect和等价的

    Cg代码 122

    15.9.5 CubeNormal和等价的

    Cg代码 122

    15.10 抓屏操作 123

    15.10.1 如何使用GrabPass 123

    15.10.2 一个模拟曲面反射的

    例子 124

    15.11 雾效 124

    15.11.1 雾效和Unity的3种

    实现 124

    15.11.2 材质中对雾效的控制 125

    15.11.3 实现自己的雾效 126

    15.12 蒙版 128

    15.12.1 蒙版测试、Z深度和

    Alpha测试 128

    15.12.2 使用蒙版测试改变渲染

    结果 128

    15.12.3 综合使用蒙版和队列 128

    第 16章 固定流水线 130

    16.1 Unity中的固定流水线 130

    16.1.1 固定流水线基本形态 130

    16.1.2 与照明相关的Material块 130

    16.1.3 处理纹理的SetTexture块 131

    16.1.4 流水线基本形态的另一种

    写法 131

    16.1.5 Combine语句 131

    16.2 使用顶点色 132

    16.2.1 使用ColorMaterial 132

    16.2.2 使用Bind 132

    16.3 在固定流水线中使用光照贴图 132

    16.4 嵌套Cg代码 133

    第 17章 表面着色器 134

    17.1 表面着色器的适应性 134

    17.1.1 一个分析策略 134

    17.1.2 测试用的场景 134

    17.1.3 检测结果 135

    17.2 延迟渲染和GeoBuffer 135

    17.3 表面着色器的特殊性 136

    17.3.1 表面着色器的混合和透明 136

    17.3.2 自定义Vertex函数 137

    第 18章 凹凸材质 139

    18.1 切空间 139

    18.2 凹凸贴图 139

    18.2.1 计算到切空间的矩阵 139

    18.2.2 Unity中法线贴图的压缩

    格式 140

    18.2.3 使用切空间矩阵的另一种

    方法 140

    18.2.4 Unity对切空间计算的

    支持 141

    18.2.5 解压缩法线贴图的函数 141

    18.2.6 在切空间中计算高光 142

    18.2.7 表面着色器和切空间 142

    18.3 视差映射 143

    18.3.1 视差映射及其别名 143

    18.3.2 一个使用灰度图来

    偏移UV的材质 143

    18.3.3 结合法线贴图 145

    18.3.4 用视角来决定UV偏移量 145

    18.3.5 一个完整的实现 146

    18.4 地势映射 147

    18.4.1 视差映射的极限和地势映射的

    面世 147

    18.4.2 地势映射的算法 148

    18.4.3 一个完整的实现 148

    第 19章 卡通材质 151

    19.1 描边 151

    19.1.1 沿法线挤出轮廓 151

    19.1.2 容易产生的问题 152

    19.1.3 在视空间中挤出 152

    19.1.4 顶点位置的另一个含义 153

    19.1.5 调和法线和顶点方向 154

    19.1.6 判断顶点的指向 154

    19.1.7 不仅仅是轮廓 155

    19.1.8 通过Z偏移量来描边 158

    19.2 卡通着色 158

    19.2.1 对光照进行离散化 158

    19.2.2 使用2D贴图重新映射

    光照 160

    第 20章 镜面材质 162

    20.1 镜像一个相机 162

    20.1.1 镜子里的世界和我的计划 162

    20.1.2 在脚本中对位置和角度进行

    镜像 162

    20.2 使用镜像相机来渲染和投影 163

    20.2.1 镜面材质的工作—采样被

    投影的渲染结果 163

    20.2.2 脚本的工作—渲染镜像相机

    和设置投影矩阵 164

    20.3 镜像相机的近剪切平面和

    倾斜矩阵 164

    20.3.1 调节近剪切平面 164

    20.3.2 使用倾斜矩阵微调视锥体 165

    第 21章 透明和半透明材质 166

    21.1 半透明材质 166

    21.2 化繁为简 166

    21.3 透明材质 167

    第 22章 体积雾 170

    22.1 距离的表达—相对于背景的

    体积雾 170

    22.1.1 需要计算的东西 170

    22.1.2 使用一个通道来完成所有的

    计算 170

    22.1.3 黑色的雾效 171

    22.2 厚度的表达—物体形体的

    体积雾 172

    22.2.1 必须计算的两个数据 172

    22.2.2 在Unity中使用一个通道来

    完成所有计算 172

    第 23章 面积光 175

    23.1 线光源 175

    23.1.1 点、线、面 175

    23.1.2 如何理解一个线光源 175

    23.1.3 通过脚本传递线光源的

    几何信息 175

    23.1.4 计算线光源的照明 176

    23.1.5 线光源的辐射方向 177

    23.1.6 线光源的衰减 178

    23.2 面积光源 179

    23.2.1 面积光和线光源的不同 179

    23.2.2 通过脚本设定面积光的

    几何特性 179

    23.2.3 计算面积光 179

    23.2.4 和默认照明的整合 181

    第 24章 体积光 183

    24.1 体积光和体积阴影 183

    24.1.1 体积光 183

    24.1.2 体积光和体积阴影的关系 183

    24.2 实现体积光 183

    24.2.1 在着色器中表现体积光 183

    24.2.2 脚本的帮助 184

    第 25章 材质替代渲染 186

    25.1 相机和渲染消息 186

    25.1.1 相机的渲染消息发送顺序 186

    25.1.2 *后能改变Cull操作结果的

    地方 186

    25.1.3 *后能设置材质数据的

    地方 187

    25.2 如何使用RenderWithShader方法 187

    25.2.1 标签值不同的5个着色器 187

    25.2.2 调用RenderWithShader

    方法的脚本 189

    25.2.3 替换用的5个材质 190

    25.2.4 检测RenderWithShader

    方法的效果 191

    25.2.5 使用子着色器组织替代

    材质 191

    25.2.6 如何设置替代材质的属性 192

    25.2.7 将结果输出到屏幕上 192

    25.3 SetReplacementShader和

    ResetReplacementShader与

    RenderWithShader方法的异同 193

    第 26章 后期效果 194

    26.1 Graphics的两个方法 194

    26.1.1 与相机渲染方法的不同

    之处 194

    26.1.2 Blit方法的简单示例 194

    26.1.3 使用BlitMultiTap方法进行

    多重采样 195

    26.2 一个简单的调色 199

    26.2.1 调色用的脚本 199

    26.2.2 调色用的材质 200

    26.2.3 更高效的做法 201

    26.3 景深 203

    26.3.1 用于模糊图像的材质 203

    26.3.2 进行纵横两次模糊操作 204

    26.3.3 进行混合操作的脚本 204

    26.3.4 进行混合操作的材质 205

    26.3.5 提供一个可调节参数 206

    26.4 轮廓检测 206

    26.4.1 用脚本获得场景的Z深度和

    法线 207

    26.4.2 在材质中进行边缘检测 207

    26.5 扭曲 208

    26.5.1 通过UV操作扭曲图像 208

    26.5.2 限定扭曲的区域 209

    26.5.3 使用物体来做遮罩 210

    26.6 运动模糊 213

    26.6.1 如何记录运动轨迹 213

    26.6.2 实现运动模糊的材质 213

    26.6.3 用于完成整个过程的脚本 214

    26.6.4 通过Alpha和帧的混合操作

    实现运动模糊 215

    26.7 噪波 215

    26.7.1 根据Z深度来混合噪波 216

    26.7.2 根据明暗程度来混合噪波 217

    26.8 色彩的溢出 217

    26.8.1 色彩溢出的算法考量 218

    26.8.2 实现色彩溢出的采样计算 218

    第 27章 投影 220

    27.1 Unity的Projector 220

    27.1.1 Projector中材质的执行

    顺序 220

    27.1.2 如何写Projector使用的

    材质 220

    27.1.3 控制投影淡进淡出的矩阵 221

    27.2 实现自己的投影 222

    27.2.1 设定投影矩阵的脚本 222

    27.2.2 采样投影的材质 223

    27.2.3 直接投影到屏幕上 224

    第 28章 分割一个物体 225

    28.1 分割一个物体的思路 225

    28.1.1 我们需要什么样的信息 225

    28.1.2 脚本的帮助 225

    28.2 在着色器中剪切一个物体 225

    第5篇 着色器的组织和优化

    第 29章 着色器的组织和复用 228

    29.1 cginc文件 228

    29.1.1 Unity的UnityCG.cginc

    文件 228

    29.1.2 定义自己的cginc文件 228

    29.1.3 使用自定义的cginc文件 229

    29.2 通过UsePass来复用通道 229

    29.2.1 定义自己要复用的通道 229

    29.2.2 复用这些通道 230

    29.3 定义着色器的关键字 231

    29.3.1 使用关键字改变着色器的

    行为 231

    29.3.2 自定义着色器的关键字 231

    29.4 使用multi_compile编译着色器的

    多个版本 232

    29.4.1 使用multi_compile实现多次

    编译 232

    29.4.2 在脚本中选择着色器的

    版本 232

    29.4.3 使用自定义的材质编辑器 233

    29.4.4 MaterialEditor 233

    29.5 Unity对DX11支持所带来的

    问题 234

    第30章 基本的渲染概念 236

    30.1 逐顶点计算和逐像素计算 236

    30.1.1 逐顶点计算 236

    30.1.2 逐像素计算 236

    30.1.3 如何在这两个概念中

    取舍 236

    30.2 绘制调用的意义 236

    30.2.1 绘制调用的概念 236

    30.2.2 正确理解绘制调用对开发

    应用的意义 236

    30.2.3 合批的概念和Unity为优化

    绘制调用所做的工作 237

    30.2.4 优化绘制调用 237

    30.3 利用渲染队列的技巧 237

    30.3.1 渲染队列的概念 237

    30.3.2 设置渲染队列的技巧 237

    第31章 渲染优化 238

    31.1 渲染优化的元素 238

    31.2 小型物体的优化 238

    31.3 中型物体的优化 240

    31.4 大型物体的优化 241

    31.5 模型的优化 242

    31.6 地形的优化 243

    31.7 UI的优化 246

    31.8 物理引擎 248

    31.9 慎用后期效果 248

    31.10 慎用透明效果 248

    31.11 其他 248

    31.12 移动平台的特点 249

    31.12.1 一些指令的运算速度 249

    31.12.2 几何复杂度 249

    31.12.3 贴图的问题 249

    31.12.4 数据类型的使用方式 250

    31.12.5 变量的使用 251

    附录 相关资源 252









    郭浩瑜,社区的技术分享者,Unity资深开发者,在游戏开发、Unity3D、特效开发上具有很高技术水平。



    1.一本专一介绍底层渲染的图书 。对着色器的概念、渲染流水线以及图形存储器的解释,扩展了在阴影批处理和渲染优化方面的内容。同时,针对不好理解的体积阴影和体积光,改成了在世界坐标空间内实现的程序。 2.针对Unity 5.x全新改版,删减了一些第2版中难懂且没有实际意义的内容。 3.书中的彩图文件和工程文件全部提供给读者免费下载。


    【内容简介】


    内 容 提 要 本书全面讲解了Unity Shader渲染的实用技术,分为5篇,共31章。主要内容有着色器的概念和渲染流水线,渲染原理和图形存储器,Unity中着色器的形态,着色器中用到的各种空间概念,基本的光照模型,通道,前向渲染路径,基于光照贴图的烘焙照明,柔和的低频照明,各种阴影,通道的通用指令开关,固定流水线,表面着色器,常用的材质,雾的计算,物体的分割,自定义光源,高级效果,以及着色器的组织和复用,渲染优化等。 本书适合移动开发者、游戏开发者、程序员阅读,也可作为大专院校相关专业的师生用书以及培训学校的教材。


    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购