img
share 分享

Unity Shader入门精要

作者:冯乐乐

出版社:人民邮电出版社

ISBN:9787115423054

VIP会员免费 (仅需0.8元/天) ¥ 44.16

温馨提示: 价值40000元的1000本电子书,VIP会员随意看哦!

电子书推荐

更多资源 展开

Unity+Shader入门精要.pdf 评分:

**篇基础篇 **章欢迎来到Shader的世界2 1.1程序员的三大浪漫2 1.2本书结构3 第2章渲染流水线5 2.1综述5 2.1.1什么是流水线5 2.1.2什么是渲染流水线6 2.2CPU和GPU之间的通信7 2.2.1把数据加载到显存中7 2.2.2设置渲染状态8 2.2.3调用DrawCall8 2.3GPU流水线9 2.3.1概述9 2.3.2顶点着色器10 2.3.3裁剪11 2.3.4屏幕映射11 2.3.5三角形设置12 2.3.6三角形遍历13 2.3.7片元着色器13 2.3.8逐片元操作14 2.3.9总结17 2.4一些容易困惑的地方18 2.4.1什么是OpenGL/DirectX18 2.4.2什么是HLSL、GLSL、CG19 2.4.3什么是DrawCall20 2.4.4什么是固定管线渲染22 2.5那么,你明白什么是Shader了吗23 2.6扩展阅读23 第3章UnityShader基础24 3.1UnityShader概述25 3.1.1一对好兄弟:材质和UnityShader25 3.1.2Unity中的材质26 3.1.3Unity中的Shader26 3.2UnityShader的基础:ShaderLab28 3.3UnityShader的结构29 3.3.1给我们的Shader起个名字29 3.3.2材质和UnityShader的桥梁:Properties29 3.3.3重量级成员:SubShader31 3.3.4留一条后路:Fallback33 3.3.5ShaderLab还有其他的语义吗33 3.4UnityShader的形式33 3.4.1Unity的宠儿:表面着色器34 3.4.2*聪明的孩子:顶点/片元着色器35 3.4.3被抛弃的角落:固定函数着色器35 3.4.4SHOU*选择哪种UnityShader形式36 3.5本书使用的UnityShader形式36 3.6答疑解惑36 3.6.1UnityShader!=真正的Shader36 3.6.2UnityShader和CG/HLSL之间的关系37 3.6.3我可以使用GLSL来写吗38 3.7扩展阅读38 第4章学习Shader所需的数学基础39 4.1背景:农场游戏39 4.2笛卡儿坐标系40 4.2.1二维笛卡儿坐标系40 4.2.2三维笛卡儿坐标系41 4.2.3左手坐标系和右手坐标系42 4.2.4Unity使用的坐标系44 4.2.5练习题45 4.3点和矢量45 4.3.1点和矢量的区别46 4.3.2矢量运算47 4.3.3练习题53 4.4矩阵54 4.4.1矩阵的定义54 4.4.2和矢量联系起来55 4.4.3矩阵运算55 4.4.4特殊的矩阵57 4.4.5行矩阵还是列矩阵60 4.4.6练习题61 4.5矩阵的几何意义:变换62 4.5.1什么是变换62 4.5.2齐次坐标63 4.5.3分解基础变换矩阵63 4.5.4平移矩阵64 4.5.5缩放矩阵64 4.5.6旋转矩阵65 4.5.7复合变换66 4.6坐标空间67 4.6.1为什么要使用这么多不同的坐标空间68 4.6.2坐标空间的变换68 4.6.3顶点的坐标空间变换过程72 4.6.4模型空间73 4.6.5世界空间73 4.6.6观察空间75 4.6.7裁剪空间77 4.6.8屏幕空间83 4.6.9总结85 4.7法线变换86 4.8UnityShader的内置变量(数学篇)87 4.8.1变换矩阵87 4.8.2摄像机和屏幕参数88 4.9答疑解惑89 4.9.1使用3×3还是4×4的 变换矩阵89 4.9.2CG中的矢量和矩阵类型89 4.9.3Unity中的屏幕坐标:ComputeScreenPos/VPOS/WPOS90 4.10扩展阅读93 4.11练习题答案93 第2篇初级篇 第5章开始UnityShader学习之旅100 5.1本书使用的软件和环境100 5.2一个*简单的顶点/片元着色器100 5.2.1顶点/片元着色器的基本结构101 5.2.2模型数据从哪里来103 5.2.3顶点着色器和片元着色器之间如何通信104 5.2.4如何使用属性105 5.3强大的援手:Unity提供的内置文件和变量107 5.3.1内置的包含文件107 5.3.2内置的变量109 5.4Unity提供的CG/HLSL语义109 5.4.1什么是语义109 5.4.2Unity支持的语义110 5.4.3如何定义复杂的变量类型110 5.5程序员的烦恼:Debug111 5.5.1使用假彩色图像111 5.5.2利用神器:VisualStudio113 5.5.3*新利器:帧调试器113 5.6小心:渲染平台的差异115 5.6.1渲染纹理的坐标差异115 5.6.2Shader的语法差异116 5.6.3Shader的语义差异117 5.6.4其他平台差异117 5.7Shader整洁之道117 5.7.1float、half还是fixed117 5.7.2规范语法118 5.7.3避免不必要的计算118 5.7.4慎用分支和循环语句119 5.7.5不要除以0119 5.8扩展阅读120 第6章Unity中的基础光照121 6.1我们是如何看到这个世界的121 6.1.1光源121 6.1.2吸收和散射122 6.1.3着色122 6.1.4BRDF光照模型123 6.2标准光照模型123 6.2.1环境光123 6.2.2自发光124 6.2.3漫反射124 6.2.4高光反射124 6.2.5逐像素还是逐顶点125 6.2.6总结125 6.3Unity中的环境光和自发光126 6.4在UnityShader中实现漫反射光照模型126 6.4.1实践:逐顶点光照126 6.4.2实践:逐像素光照129 6.4.3半兰伯特模型130 6.5在UnityShader中实现高光反射光照模型131 6.5.1实践:逐顶点光照132 6.5.2实践:逐像素光照134 6.5.3Blinn-Phong光照模型135 6.6召唤神龙:使用Unity内置的函数136 第7章基础纹理139 7.1单张纹理140 7.1.1实践140 7.1.2纹理的属性142 7.2凹凸映射146 7.2.1高度纹理146 7.2.2法线纹理146 7.2.3实践148 7.2.4Unity中的法线纹理类型154 7.3渐变纹理155 7.4遮罩纹理158 7.4.1实践159 7.4.2其他遮罩纹理161 第8章透明效果162 8.1为什么渲染顺序很重要163 8.2UnityShader的渲染顺序164 8.3透明度测试165 8.4透明度混合169 8.5开启深度写入的半透明效果171 8.6ShaderLab的混合命令173 8.6.1混合等式和参数173 8.6.2混合操作174 8.6.3常见的混合类型175 8.7双面渲染的透明效果176 8.7.1透明度测试的双面渲染176 8.7.2透明度混合的双面渲染176 第3篇中级篇 第9章更复杂的光照180 9.1Unity的渲染路径180 9.1.1前向渲染路径182 9.1.2顶点照明渲染路径185 9.1.3延迟渲染路径186 9.1.4SHOU*选择哪种渲染路径188 9.2Unity的光源类型188 9.2.1光源类型有什么影响189 9.2.2在前向渲染中处理不同的 光源类型190 9.3Unity的光照衰减195 9.3.1用于光照衰减的纹理196 9.3.2使用数学公式计算衰减196 9.4Unity的阴影196 9.4.1阴影是如何实现的197 9.4.2不透明物体的阴影198 9.4.3使用帧调试器查看阴影绘制过程202 9.4.4统一管理光照衰减和阴影204 9.4.5透明度物体的阴影206 9.5本书使用的标准UnityShader209 **0章高级纹理210 10.1立方体纹理210 10.1.1天空盒子210 10.1.2创建用于环境映射的立方体纹理212 10.1.3反射213 10.1.4折射215 10.1.5菲涅耳反射217 10.2渲染纹理219 10.2.1镜子效果219 10.2.2玻璃效果220 10.2.3渲染纹理vs.GrabPass224 10.3程序纹理225 10.3.1在Unity中实现简单的程序纹理225 10.3.2Unity的程序材质228 **1章让画面动起来230 11.1UnityShader中的内置变量 (时间篇)230 11.2纹理动画230 11.2.1序列帧动画230 11.2.2滚动的背景233 11.3顶点动画234 11.3.1流动的河流234 11.3.2广告牌236 11.3.3注意事项239 第4篇高级篇 **2章屏幕后处理效果244 12.1建立一个基本的屏幕后处理脚本系统244 12.2调整屏幕的亮度、饱和度和对比度246 12.3边缘检测249 12.3.1什么是卷积249 12.3.2常见的边缘检测算子249 12.3.3实现250 12.4高斯模糊253 12.4.1高斯滤波253 12.4.2实现254 12.5Bloom效果259 12.6运动模糊263 12.7扩展阅读266 **3章使用深度和法线纹理267 13.1获取深度和法线纹理267 13.1.1背后的原理267 13.1.2如何获取269 13.1.3查看深度和法线纹理271 13.2再谈运动模糊272 13.3全局雾效276 13.3.1重建世界坐标276 13.3.2雾的计算278 13.3.3实现278 13.4再谈边缘检测283 13.5扩展阅读287 **4章非真实感渲染288 14.1卡通风格的渲染288 14.1.1渲染轮廓线288 14.1.2添加高光289 14.1.3实现290 14.2素描风格的渲染293 14.3扩展阅读296 14.4参考文献297 **5章使用噪声298 15.1消融效果298 15.2水波效果302 15.3再谈全局雾效305 15.4扩展阅读309 15.5参考文献309 **6章Unity中的渲染优化技术310 16.1移动平台的特点310 16.2影响性能的因素311 16.3Unity中的渲染分析工具312 16.3.1认识Unity5的渲染统计窗口312 16.3.2性能分析器的渲染区域313 16.3.3再谈帧调试器313 16.3.4其他性能分析工具314 16.4减少drawcall数目314 16.4.1动态批处理315 16.4.2静态批处理316 16.4.3共享材质318 16.4.4批处理的注意事项318 16.5减少需要处理的顶点数目319 16.5.1优化几何体319 16.5.2模型的LOD技术319 16.5.3遮挡剔除技术320 16.6减少需要处理的片元数目320 16.6.1控制绘制顺序320 16.6.2时刻警惕透明物体321 16.6.3减少实时光照和阴影321 16.7节省带宽322 16.7.1减少纹理大小322 16.7.2利用分辨率缩放323 16.8减少计算复杂度323 16.8.1Shader的LOD技术323 16.8.2代码方面的优化323 16.8.3根据硬件条件进行缩放324 16.9扩展阅读324 第5篇扩展篇 **7章Unity的表面着色器探秘328 17.1表面着色器的一个例子328 17.2编译指令330 17.2.1表面函数330 17.2.2光照函数330 17.2.3其他可SHOU*选参数331 17.3两个结构体332 17.3.1数据来源:Input结构体332 17.3.2表面属性:SurfaceOutput结构体333 17.4Unity背后做了什么334 17.5表面着色器实例分析336 17.6SurfaceShader的缺点341 **8章基于物理的渲染342 18.1PBS的理论和数学基础342 18.1.1光是什么343 18.1.2双向反射分布函数(BRDF)344 18.1.3漫反射项345 18.1.4高光反射项346 18.1.5Unity中的PBS实现347 18.2Unity5的StandardShader348 18.2.1它们是如何实现的348 18.2.2如何使用StandardShader349 18.3一个更加复杂的例子352 18.3.1设置光照环境352 18.3.2放置反射探针355 18.3.3调整材质356 18.3.4线性空间356 18.4答疑解惑357 18.4.1什么是全局光照357 18.4.2什么是伽马校正358 18.4.3什么是HDR361 18.4.4那么,PBS适合什么样的游戏362 18.5扩展阅读363 18.6参考文献363 **9章Unity5更新了什么365 19.1场景“更亮了”365 19.2表面着色器更容易“报错了”365 19.3DANG*当家做主:自己控制非统一缩放的网格366 19.4固定管线着色器逐渐退出舞台366 第20章还有更多内容吗368 20.1如果你想深入了解渲染的话368 20.2世界那么大369 20.3参考文献369

...展开详情
上传时间:2017-08 大小:48B
热门图书