码迷,mamicode.com
首页 > 编程语言 > 详细

【我的书】Unity Shader的书 — 目录(实时更新中)

时间:2015-06-19 15:17:11      阅读:810      评论:0      收藏:0      [点我收藏+]

标签:


写在前面



感谢所有点进来看的朋友。没错,我目前打算写一本关于Unity Shader的书。

出书的目的有下面几个:

  1. 总结我接触Unity Shader以来的历程,给其他人一个借鉴。我非常明白学Shader的艰难,在群里也见了很多人提出的问题。我觉得学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文。。。这对我有什么好处呢?强迫我对知识进行梳理,对细节问题把握更清楚。

  2. 第二个原因你懂的。

关于本书的定位问题:

  1. 面向Unity Shader初学者,但要:

    1. 有一定的编程经历,不然我说:在脚本里写一个函数XXX,您问我,脚本是啥?我:……。
    2. 希望您还记得初中高中的基本数学。起码能把数算清楚。我明白很多人早就把矩阵这些稍微复杂一点的数学还给了大学老师,所以我会单独在一个章节里介绍。
    3. 希望您有一定的耐心。为什么你老是觉得看不懂、学不会Shader,可以反思下自己是不是太急躁了,想要今天看一下明天就会。放弃吧,这是不可能的。

    我写这本书的一个目标是,希望帮助初学者把基础打牢,没有基础任何上层建筑都是不可靠的。

  2. 我不是在写一本特效大全,所以你如果想要看到各种酷炫狂霸拽的特效,抱歉,这本书里几乎没有。这跟上一点有很大关系,仅靠一本书,我可以肯定一个初学者没有办法成为一个“Shader大神”。我希望所有读过这本书的人可以真正明白shader是个什么东西,而不是说:“哦,shader嘛,就是在Unity里右键Create->Shader得到的那个东西嘛”。关于特效大全的问题,如果将来我有十足的经验和资格了,可能会真的写一本,哈哈哈



写书是件很不容易的事情,希望我可以把它做好。



整体结构



我把这本书分为五大篇章:

  • 基础篇:这是很重要的一章,主要是为了初学者普及基本的理论知识,以及所需的数学基础。我明白很多人看不懂网上的一些材料,我尽量讲得通俗。

  • Shader初级篇:从最简单的shader开始,讲解shader中基础的光照模型、纹理、和透明效果等。同时,还会介绍一些shader的Debug技巧、shader里常见报错信息。

  • Shader中级篇:这是进阶篇章,将讲解更加复杂的光照、高级纹理、以及如何用shader实现动画等一系列进阶内容;

  • Shader高级篇:则涵盖了一些shader的高级用法,如使用缓冲区、实现屏幕特效、非真实感渲染等,同时,还会介绍一些优化技巧;

  • 扩展篇:将会涵盖一些Unity Surface Shader背后的机制,还会针对Unity 5.0+版本中的一些新的特性进行简要分析。最后,希望向大家介绍一点学习shader的经验和资源。

目前目录已经初步定型,把目录记录在这里,但我会不断更新。



如果您对该书的目录和内容有任何意见和建议都可以在下方留言。如果您没有CSDN账号,也可以通过发邮件来告诉我:lelefeng1992 # gmail DOT com。我会根据您的意见对目录和内容做出一定的更改。



目录



* 前言
* 这本书讲些什么
* 读这本书之前你需要哪些知识
* 谁适合读这本书
* 谁暂时还不适合读这本书
* 约定
* 读者反馈
* 本书源码

第1部分 基础篇

  • 第1章 欢迎来到Shader的世界

    • 1.1 程序员的三大浪漫:为什么要学习Shader
    • 1.2 这不是程序员一个人的战斗
    • 1.3 世界这么大
  • 第2章 渲染流水线

    • 2.1 综述
      • 2.1.1 你为什么要了解渲染流水线
      • 2.1.1 什么是流水线
      • 2.1.2 什么是渲染流水线
      • 2.1.3 应用阶段
      • 2.1.4 几何阶段
      • 2.1.5 光栅化阶段
    • 2.2 GPU流水线
      • 2.2.1 概述
      • 2.2.2 Vertex Shader
      • 2.2.3 Clipping
      • 2.2.4 Screen Mapping
      • 2.2.5 Triangle Setup
      • 2.2.6 Triangle Traversal
      • 2.2.7 Fragment Shader
      • 2.2.8 Per-Fragment Operations
      • 2.2.9 总结
    • 2.3 大话版渲染流水线
    • 2.4 一些容易困惑的地方
      • 2.4.1 什么是OpenGL/DirectX
      • 2.4.2 什么是HLSL、GLSL、CG
      • 2.4.3 什么是Draw Call
      • 2.4.4 什么是固定渲染管线(Fixed-Function Pipeline)
    • 2.5 那么,你明白什么是Shader了吗
    • 扩展阅读
  • 第3章 Unity Shader基础

    • 3.1 Unity Shader概述
      • 3.1.1 一对好兄弟:材质和Unity Shader
      • 3.1.2 Unity中的材质
      • 3.1.3 Unity中的Shader
    • 3.2 Unity Shader的基础:ShaderLab
      • 3.2.1 什么是ShaderLab
      • 3.2.2 ShaderLab的基础语法
    • 3.3 Unity Shader的形式
      • 3.3.1 抛弃的角落:Fixed Function Shaders
      • 3.3.2 最聪明的孩子:Vertex/Fragment Shader
      • 3.3.2 Unity的宠儿:Surface Shader
      • 3.3.4 和Vertex/Fragment Shader的关系
      • 3.3.5 选择哪种Unity Shader形式
    • 3.4 Unity Shader的结构
      • 4.4.1 给我们的Shader起个名字:Shader
      • 4.4.2 材质和Unity Shader的桥梁:Properties
      • 4.4.3 重量级成员:SubShaders
    • 3.5 Unity Shader != 真正的“Shader”
  • 第4章 学习Shader所需的数学基础

    • 4.1 Shader中的数学没你想得那么可怕
    • 4.2 用数学表示这个世界:点和向量
    • 4.3 矩阵
      • 4.3.1 左乘/右乘和行优先/列优先
    • 4.4 平移、旋转和缩放
    • 4.5 矩阵的魔法:顶点变换
      • 4.5.1 模型空间
      • 4.5.2 世界空间
      • 4.5.3 观察空间
      • 4.5.4 不同空间的变换

第2部分 Shader初级篇

  • 第5章 开始Unity Shader学习之旅

    • 5.1 本书使用的软件
    • 5.2 一个最简单的Vertex/Fragment Shader
      • 5.2.1 Shader的最终目的
      • 5.2.2 模型数据从哪里来
      • 5.2.3 Vertex和Fragment Shader如何通信
      • 5.2.4 属性和Uniform变量
    • 5.3 Unity中的矩阵变换
      • 5.3.1 在模型坐标系下计算
      • 5.3.2 在世界坐标系下计算
      • 5.3.3 在视角坐标系下计算
    • 5.4 ShaderLab的内置变量、宏和函数
      • 5.4.1 用于变换的变量、宏和函数
      • 5.4.2 用于光照的变量、宏和函数
      • 5.4.3 其他变量
    • 5.5 程序员的烦恼:Debug
      • 5.5.1 利用假彩色图像
      • 5.5.2 利用软件
      • 5.5.3 疑难解答:常见的报错信息
    • 5.5 Shader的优化
      • 5.5.1 避免非必要的计算
      • 5.5.2 只在真正需要时创建临时变量
      • 5.5.3 float、half还是fixed
      • 5.5.4 慎用分支语句
    • 5.6 Shader整洁之道:规范你的代码
    • 5.7 Shader的平台差异:小心DX11!
  • 第6章 基本的光照模型

    • 6.1 什么是光照模型
      • 6.1.1 我们是如何看到这个世界的
      • 6.1.2 BRDF经验模型
    • 6.2 Unity中的光源
      • 6.2.1 平行光
      • 6.2.2 点光源
      • 6.2.3 光源的RenderMode和Shader的LightMode
    • 6.3 漫反射光照模型
      • 6.3.1 理论:Lambert光照模型
      • 6.3.2 理论:Half Lambert光照模型
      • 6.3.3 实践:逐顶点光照
      • 6.3.4 实践:逐像素光照
    • 6.4 高光反射光照模型
      • 6.4.1 理论:Phong光照模型
      • 6.4.2 理论:BlinnPhong光照模型
      • 6.4.3 理论:逐顶点光照
      • 6.4.4 理论:逐像素光照
    • 6.5 边缘光照模型
      • 6.5.1 理论
      • 6.5.2 实践
  • 第7章 基础纹理

    • 7.1 使用单张纹理
    • 7.2 使用多张纹理:纹理混合
    • 7.3 使用法线纹理
      • 7.3.1 模型空间还是切线空间
      • 7.3.2 实践
    • 7.4 使用渐变纹理
    • 7.5 使用遮罩纹理
    • 7.6 纹理不仅仅是颜色
  • 第8章 透明效果

    • 8.1 为什么渲染队列很重要
    • 8.2 Alpha Test
    • 8.3 Alpha Blending

第3部分 Shader中级篇

  • 第8章 更复杂的光照

    • 8.1 处理多个光源
      • 8.1.1 回顾:光源的RenderMode和Shader的LightMode
      • 8.1.2 实践:使用多个Pass
    • 8.2 阴影
    • 8.3 双面渲染:Cull指令
    • 8.4 更复杂的透明效果
      • 8.4.1 回顾:Alpha Test和Alpha Blending
      • 8.4.2 为什么我的模型发生了穿插
  • 第9章 高级纹理

    • 9.1 三维纹理:Cubemap
      • 9.1.1 反射效果
      • 9.1.2 Fresnel反射
      • 9.1.3 折射效果
      • 9.1.4 天空盒子(Skybox)
    • 9.2 渲染到纹理(Render To Texture)
    • 9.3 程序式纹理(Procedure Texture)
  • 第10章 让画面动起来

    • 10.1 纹理动画
      • 10.1.1 流动的水面
    • 10.2 顶点动画
      • 10.2.1 飘扬的旗帜
      • 10.2.2 Billboard
    • 10.3 Shader和脚本的互动
    • 10.4. 实践:飞扬的瀑布
    • 10.5 想怎么动就怎么动?

第4部分 Shader高级篇

  • 第11章 基于图像处理的渲染方法

    • 11.1 伽马校正
    • 11.2 抗锯齿
    • 11.3 亮度、饱和度和对比度
    • 11.4 实现类似Photoshop的混合模式
    • 11.5 实现渐变叠加效果
    • 11.6 实现晕影效果
  • 第12章 使用深度和法线缓冲区

    • 12.1 如何获取缓冲区
    • 12.2 实践:景深效果
    • 12.3 实践:边缘检测
  • 第13章 非真实感渲染

    • 13.1 卡通渲染
    • 13.2 轮廓线渲染
    • 13.3 手绘风格的渲染
  • 第14章 在Shader中使用噪声

    • 14.1 什么是噪声(Noise)
    • 14.2 Perlin噪声
    • 14.3 Worley噪声
    • 14.4 实践
  • 第15章 移动平台的优化

    • 15.1 移动平台与台式机的区别
    • 15.2 识别出影响性能的因素
      • 15.2.1 CPU
      • 15.2.2 Vertex的处理
      • 15.2.3 Fragment的处理
      • 15.2.4 带宽
      • 15.2.5 Unity的性能分析工具:Profiler
    • 15.3 优化几何体
    • 15.4 使用LOD技术
    • 15.5 使用遮挡剔除技术
    • 15.6 控制绘制顺序
    • 15.7 时刻警惕透明物体
    • 15.8 减少实时光照
      • 15.8.1 使用Lightmaps
      • 15.8.2 使用God Rays
    • 15.9 减少Draw Calls
      • 15.9.1 静态批处理
      • 15.9.2 动态批处理
      • 15.9.3 如何选择
    • 15.10 减少纹理大小
    • 15.11 利用缩放

第5部分 扩展篇

  • 第16章 Surface Shader探秘

    • 16.1 基本流水线
    • 16.2 Unity背后做了什么
  • 第17章 基于物理的渲染——Physically Based Shading

    • 17.1 理论
    • 17.2 Unity的Standard Shader
  • 第18章 Unity 5.0更新了什么

    • 18.1 场景“更亮了”
    • 18.2 Surface Shader更容易“报错了”
    • 18.3 当家做主:自己控制非统一缩放的网格
    • 18.4 Fixed function逐渐退出舞台
  • 第19章 还有更多内容吗

    • 19.1 如果你想深入了解shader的话
    • 19.2 还是那句话:世界那么大
  • 参考文献

  • 索引

【我的书】Unity Shader的书 — 目录(实时更新中)

标签:

原文地址:http://blog.csdn.net/candycat1992/article/details/46560879

(1)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!