书籍详情
《Unity 3D内建着色器源码剖析》[75M]百度网盘|亲测有效|pdf下载
  • Unity 3D内建着色器源码剖析

  • 作者:熊新科 著
  • 热度:8821
  • 上架时间:2025-01-04 08:18:29
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

作  者:熊新科 著
定  价:109.8
出 版 社:人民邮电出版社
出版日期:2019年08月01日
页  数:352
装  帧:平装
ISBN:9787115507044
主编推荐
1.一本Unity源码分析的图书,内容丰富实用,知识点系统完善,是游戏开发人员的学习成长秘籍; 2.联系辐射度学、光度学、色度学等物理理论,从物理学角度上阐述着色器所需要的基础知识; 3.剖析内建着色器库中的若干工具库函数,阐述清楚原理,让读者深入理解,能在开发阶段中有效使用; 4.剖析内建着色器库中的标准材质,以及若干常用的着色器程序的实现原理,让读者能深入学习到当前流行的渲染技术的实现原理,并融会贯通到实际开发工作中。
目录
第1章实时3D渲染流水线1
1.1概述1
1.2顶点处理阶段2
1.2.1顶点的组织方式2
1.2.2坐标系统和顶点法线的确定方式3
1.2.3把顶点从模型空间变换到世界空间5
1.2.4把顶点从世界空间变换到观察空间9
1.2.5把顶点从观察空间变换到裁剪空间11
1.3光栅化阶段18
1.3.1裁剪操作18
1.3.2透视除法18
1.3.3背面剔除操作19
1.3.4视口变换21
1.3.5扫描转换22
1.4片元处理与输出合并阶段22
1.4.1纹理操作23
1.4.2输出合并中的深度值操作24
1.4.3输出合并中的Alpha值操作26
1.4.4Unity3DShaderLab中的Alpha混合指令及深度测试指令27
第2章辐射度、光度和色度学基本理论30
2.1辐射度学基本理论30
2.1.1立体角32
2.1.2点光源、辐射强度和辐射亮度33
2.1.3辐射出射度和辐射入射度34
2.2光度学基本理论34
2.3色度学基本理论36
2.3.1什么是颜色36
2.3.2颜色的数字化及CIE1931-RGB颜色模型37
2.3.3CIE1931-XYZ颜色模型40
2.3.4CIE1931-Yxy颜色模型40
2.4伽马校正和sRGB颜色空间40
2.4.1伽马校正40
2.4.2sRGB颜色空间44
2.4.3Unity3D中的伽马空间和线性空间45
第3章Unity3D着色器系统47
3.1从一个外观着色器程序谈起47
3.1.1BasicDiffuse着色器展开后的代码分析49
3.1.2外观着色器的编译指示符56
3.1.3传给外观着色器函数的参数58
3.2直接编写顶点着色器和片元着色器59
3.2.1用Cg语言编写的包含着色器功能的代码片段59
3.2.2声明目标渲染器60
3.2.3着色器的语义61
3.3在Cg代码中访问着色器属性块66
3.3.1在着色器代码中声明材质属性66
3.3.2在着色器代码中声明对应于材质属性的变量67
3.4使用着色器多样体处理多种情况67
3.4.1编译指示符multi_compile和shader_feature的使用方式与区别67
3.4.2多样体关键字的使用68
3.4.3内置的multi_compile指示符快捷使用方式68
3.5多平台着色器代码的支持68
3.6确定着色器编译器的版本69
3.6.1和着色器编译器版本相关的宏69
3.6.2消除着色器代码中各平台的语义差异性70
3.6.3关闭可忽视的编译警告72
3.6.4Unity3DShader的基本数据类型72
3.6.5消除平台差异性73
3.6.6统一着色器常量缓冲区的宏定义75
3.6.7HLSL语言中的分支预测特性75
第4章引擎提供的着色器工具函数和数据结构78
4.1UnityShaderVariables.cginc文件中的着色器常量和函数78
4.1.1进行变换操作用的矩阵78
4.1.2和摄像机相关的常量缓冲区81
4.1.3与光照相关的工具函数和内置光源83
4.1.4与阴影相关的着色器常量缓冲区84
4.1.5与逐帧绘制调用相关的着色器常量缓冲区86
4.1.6与雾效果相关的常量缓冲区86
4.1.7与光照贴图相关的常量缓冲区87
4.2UnityCG.cginc文件中的工具函数和宏90
4.2.1数学常数90
4.2.2与颜色空间相关的常数和工具函数90
4.2.3描述顶点布局格式的结构体92
4.2.4用于进行空间变换的工具函数93
4.2.5与光照计算相关的工具函数97
4.2.6与HDR及光照贴图颜色编解码相关的工具函数102
4.2.7把高精度数据编码到低精度缓冲区的函数107
4.2.8法线贴图及其编解码操作的函数110
4.2.9线性化深度值的工具函数113
4.2.10合并单程立体渲染时的左右眼图像到一张纹理的函数115
4.2.11用来实现图像效果的工具函数和预定义结构体117
4.2.12计算屏幕坐标的工具函数118
4.2.13与阴影处理相关的工具函数121
4.2.14与雾效果相关的工具函数和宏123
第5章Unity3D引擎的多例化技术128
5.1多例化技术概述128
5.1.1不使用GPU多例化技术绘制多个相同模型的伪代码128
5.1.2在Direct3D11中设置输入组装阶段的示例伪代码128
5.1.3设置顶点输入组装布局129
5.1.4顶点着色器和片元着色器中对使用GPU多例化技术的对应设置129
5.2如何在材质中启用多例化技术130
5.3添加逐实例数据131
5.3.1在外观着色器中给材质颜色变量增加GPU多例化支持的代码131
5.3.2在C#层改变gameobject中的多例化材质颜色属性132
5.4在顶点着色器和片元着色器中使用多例化技术132
5.4.1在顶点着色器和片元着色器中启用GPU多例化技术132
5.4.2UNITY_VERTEX_INPUT_INSTANCE_ID宏的定义133
5.4.3DEFAULT_UNITY_VERTEX_INPUT_INSTANCE_ID宏的定义133
5.4.4UNITY_INSTANCING_BUFFER_START及另外两个配套的宏的定义134
5.4.5UNITY_INSTANCED_ARRAY_SIZE宏的定义135
5.4.6UNITY_SETUP_INSTANCE_ID宏的定义135
5.4.7DEFAULT_UNITY_SETUP_INSTANCE_ID和UNITY_TRANSFER_INSTANCE_ID宏的定义135
5.4.8着色器常量缓冲区UnityDrawCallInfo的定义136
5.4.95.4.1节中展开多例化相关的宏之后的代码137
第6章前向渲染和延迟渲染139
6.1前向渲染概述139
6.2延迟渲染概述139
6.3Unity3D中的各种渲染途径141
6.3.1Unity3D的前向渲染途径细节142
6.3.2Unity3D的延迟渲染途径细节144
第7章Unity3D的全局光照和阴影147
7.1全局照明和局部照明147
7.2引擎提供的光源类型149
7.2.1点光源149
7.2.2聚光灯光源150
7.2.3有向平行光源150
7.2.4区域面光源150
7.2.5cookie151
7.3使用实时模式光源进行全局照明151
7.4使用烘焙式光照贴图进行全局照明152
7.5使用混合光照进行全局照明153
7.5.1BakedIndirect照明模式154
7.5.2Shadowmask照明模式154
7.5.3Subtractive照明模式155
7.6光探针照明的细节156
7.6.1光探针照明概述156
7.6.2在场景中布置光探针157
7.6.3使用光探针157
7.6.4光探针代理体158
7.6.5反射用光探针158
7.7探讨基于球谐函数的全局光照160
7.7.1半球空间的光照方程161
7.7.2蒙特卡洛积分估算法的定义161
7.7.3球谐函数163
7.7.4正交对偶基函数和球谐光照166
7.7.5Unity3D中的球谐光照169
7.8引擎中的渲染阴影的功能175
7.8.1在光源空间中确定产生阴影的区域175
7.8.2在屏幕空间中确定产生阴影的区域175
7.8.3如何启用阴影175
7.8.4透视走样和层叠式阴影贴图177
第8章UnityShadowLibrary.cginc文件分析179
8.1阴影与全局照明系统的关系179
8.2聚光灯光源生成的阴影179
8.2.1启用SPOT宏179
8.2.2UNITY_DECLARE_SHADOWMAP宏的定义180
8.2.3SAMPLE_DEPTH_TEXTURE及类似的宏181
8.2.4UnitySampleShadowmap函数版本1182
8.2.5UnitySampleShadowmap函数版本2183
8.3点光源生成的阴影183
8.3.1从立方体纹理贴图中取得纹素对应的深度值183
8.3.2对采样值进行混合计算184
8.4预烘焙的阴影185
8.4.1LPPV_SampleProbeOcclusion函数185
8.4.2UnitySampleBakedOcclusion函数版本1186
8.4.3UNITY_SAMPLE_TEX2D_SAMPLER宏的定义186
8.4.4UnitySampleBakedOcclusion函数版本2187
8.4.5UnityGetRawBakedOcclusions函数187
8.4.6UnityMixRealtimeAndBakedShadows函数188
8.5阴影的淡化处理188
8.5.1UnityComputeShadowFadeDistance函数和UnityComputeShadowFade函数188
8.5.2梯度计算189
8.6计算深度阴影的偏移值190


8.6.1UnityGetReceiverPlaneDepthBias函数192

……
内容简介
本书既是一本Unity 3D着色器代码分析教程,也是一本Unity 3D着色器编程参考手册。全书共12章,主要内容包括:实时3D渲染流水线,辐射度、光度和色度学基本理论,Unity 3D着色器系统,着色器工具函数,Unity 3D引擎的多例化技术,前向渲染和延迟渲染,Unity 3D的全局光照和阴影,UnityShadow Library.cginc文件分析,AutoLight.cginc文件分析,基于物理的光照模型,Unity 3D标准着色器和Standard. shader文件分析,片元着色器实时绘制图像实战案例。
本书适合Unity Shader的游戏开发者、程序员阅读,也可供相关专业人士参考。
作者简介
熊新科 著
熊新科,游戏开发工程师。2003年进入游戏行业,先后参与多项游戏的开发。乐于分享技术,活跃于各大Unity技术圈。

相关推荐