Cg编程

游戏引擎中的Cg编程对于OpenGL或Direct3D应用程序,Unity比Cg编程要容易得多。网格和图像(即纹理)的导入由图形用户界面支持; mipmap和法线贴图可以自动计算; 最常见的顶点属性和uniforms是预定义的; OpenGL和Direct3D状态可以通过非常简单的命令设置,等等

准备

可以在Unity的下载页面下载适用于Windows和MacOS的免费版Unity 。所有包含的教程与免费版本一起使用。
应该注意几点:

  • 首先,这部分是关于Unity的顶点和片段着色器。这种着色器编程特别灵活,可以让您编写非常高效的着色器,这在渲染性能有限时(例如在移动设备上)通常很重要。它也对图像效果非常有用,并且了解GPU如何工作。如果要考虑Unity的标准照明,编程顶点和片段着色器就不太有用。(在这种情况下,Surface
    Shader更适合Unity)
  • 其次,这部分假设读者对Unity很熟悉。如果不是这样,读者应该参考Unity手册(Unity基础知识,资源工作流程和主窗口)的前三部分。
  • 第三,Unity不区分Cv(Nvidia的阴影语言)和DirectX 9风格的HLSL(Direct3D 9中的着色语言),因为这两种语言非常相似; 因此,大多数这些教程也适用于DirectX 9风格的HLSL。
  • 此外,Cg由Nvidia的Cg教程和Nvidia的Cg语言规范记录。但是,这些描述缺少特定于Unity的细节。另一方面,Unity的着色器文档专注于Unity的ShaderLab语法,并假定读者熟悉Cg。因此,在Unity中学习Cg编程,而没有Cg的先前知识可能是相当困难的。这本wikibook试图通过在Unity中提供Cg编程的介绍来弥补这个差距,而无需事先知道Cg。

教程

请注意,这些教程假定您按照它们在这里呈现的顺序阅读它们,即每个教程将假设您熟悉以前教程中介绍的概念和技术。如果您是Cg或Unity的新手,请至少阅读“基础知识”部分的教程。(以此警告!)

基础知识

  • 最小着色器(关于着色器,材质和游戏对象)
  • RGB立方体(关于顶点输出参数)
  • 着色器的调试(关于顶点输入参数)
  • 世界空间阴影(关于uniforms)

透明曲面

  • 剔除(关于丢弃片段和三角面剔除)
  • 透明度(关于混合)
  • 顺序无关的半透明渲染(关于顺序无关的混合)
  • 轮廓增强(关于转换法线)

基本照明

  • 漫反射(关于逐顶点的漫反射照明和不同种类的多种光源)
  • 镜面高光(关于逐顶点的照明)
  • 双面显示(约双面逐顶点照明)
  • 平滑的镜面高光(关于逐像素照明)
  • 平滑的双面显示(关于双面逐像素照明)
  • 多个光源(关于在一个着色器过程中处理多个光源)

基本贴图

  • 纹理球体(关于纹理球体)
  • 纹理表面光照(关于漫射照明的纹理)
  • 光照贴图(关于光照贴图)
  • 透明纹理(关于使用alpha纹理丢弃片段,Alpha Test和混合)
  • 纹理层(关于多重纹理)

3D纹理

  • 弯曲表面光照(关于正常映射)
  • 凹凸表面的投影(关于视差映射)
  • Cookies(关于塑造光的投影纹理贴图)
  • 投影机(投影机投影纹理贴图)

环境映射

  • 反射曲面(关于反射映射)
  • 弯曲玻璃(关于折射映射)
  • Skyboxes(关于渲染环境地图作为背景)
  • 多光源(关于图像照明)

照明变化

  • 拉丝金属(关于各向异性镜面反射)
  • 轮廓的镜面高光(关于镜面反射的菲涅尔因子)
  • 天光漫反射(关于半球照明)
  • 半透明表面(关于背光的漫反射和前向散射传输)
  • 半透明体(关于散射照明,减少对比度和弥漫背光在轮廓上的传播)
  • 球体的软阴影(关于渲染球体的阴影和半影)
  • Toon Shading(关于非真实感渲染)

非标准顶点变换

  • 屏幕叠加(关于从对象空间到屏幕空间的直接转换)
  • 广告牌(关于对象的视图对齐投影)
  • 非线性变形(关于顶点混合)
  • 飞机上的阴影(关于将阴影投射到飞机上)

图像效果和计算着色器

  • 最小图像效果(关于片段着色器的基本图像后期处理)
  • 计算图像效果(关于使用计算着色器进行图像效果处理)
  • 计算颜色直方图(关于使用计算着色器计算颜色直方图)
  • 计算最亮的像素(关于使用计算着色器找到最亮的像素)

杂项

  • 贝塞尔曲线(Bézier曲线和样条曲线)
  • Hermite曲线(关于立方体Hermite曲线和splines)
  • 旋转(欧拉角和四元数)
  • 虚拟现实投影(关于离轴透视投影)
  • 镜像(关于渲染平面镜与渲染纹理)

Unity3d shader 教程一 准备相关推荐

  1. [译]Unity3D Shader教程(五)Surface Shader Basics

    目录 1 Summary 2 Conversion to simple Surface Shader 3 Standard Lighting Properties 4 Implement a few ...

  2. Unity3d shader 教程三 RGB立方体

    本教程讨论顶点输出参数和片段输入参数.假设您熟悉"最小的着色器"部分. 在本教程中,我们将编写一个着色器来渲染一个类似于下图所示的RGB多维数据集.表面上每个点的颜色由其坐标确定; ...

  3. [译]Unity3D Shader教程(二)HLSL

    目录 1 HLSL? 2 Builtin Types 3 Vector Values 4 Matrix Values 5 Textures 6 Math 7 Custom Types 8 Variab ...

  4. 【游戏渲染】【译】Unity3D Shader 新手教程(1/6)

    http://gad.qq.com/article/detail/7175490 该文章来自用户转载 点击阅读原文 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散, ...

  5. Unity3D Shader 新手教程(1/6)

    刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D Shader编程望而却步.该系列教程的第一篇文章(译者注:即本文,后续还有5篇文章) ...

  6. 【译】Unity3D Shader 新手教程(1/6)

    刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D Shader编程望而却步.该系列教程的第一篇文章(译者注:即本文,后续还有5篇文章) ...

  7. Unity3D Shader基础教程

    此教程将指引你如何建立自己的Shaders,让你的游戏场景看起来更好.Unity配备了强大的阴影和材料的语言工具称为ShaderLab,以程式语言来看,它类似于CgFX和Direct3D的语法,它不只 ...

  8. Unity3D Shader官方教程翻译(三)

    Unity3D Shader官方教程翻译(三) 1.Shader语法:Pass 1个Pass块可以使一个几何物体被一次渲染. Pass { [Name and Tags] [RenderSetup] ...

  9. Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

最新文章

  1. 2022华为首个「天才少年」,是从绩点1.8逆袭的复旦博士
  2. Linux系统上用Sigil创建和编辑 EPUB 文件
  3. 英语作文 计算机新技术对生活的影响,急求一篇电脑对于未来生活影响的英语作文,50分 200词左右...
  4. stm32篇--系统初始化
  5. Qt Creator定位项
  6. 事业单位考试计算机科学与技术试题的答案,事业单位考试计算机基础知识试题答案...
  7. multipartfile前端怎么传_前端那些事如何更好管理 Api 接口
  8. php mysql 条件查询语句_where 查询条件-Medoo - 高效的轻量级PHP数据库框架, 提高开发效率!...
  9. 【python数字信号处理】——scipy库设计滤波器(IIR为例)、绘制滤波器频谱响应、IIR滤波器滤波、读写wav音频文件
  10. excel下划线转驼峰公式
  11. JAVA对List进行手动分页
  12. go mysql delete_go 操作mysql、增删改查
  13. Python入门--模块,from,import,自定义模块
  14. viewpager中fragment的生命周期管理
  15. wps显示ntko签章服务器,ntko-系统内装有OFFICE和WPS,如何让IE加载NTKOOFFICE时以office打开文件而不是以WPS打...
  16. 十六进制换算成二进制、八进制、十进制
  17. MemoryBarrier方法
  18. 谷歌/FOFA搜索引擎使用
  19. Android学生信息管理系统
  20. Java汉语转拼音首字母并大写利用Pinyin4j(多音字识别)(中午括号识别)

热门文章

  1. Pycharm中Qt designer的配置,.ui文件转.py文件,运行.py
  2. 【阅读笔记】Mutual CRF-GNN for Few-shot Learning
  3. 通过阿里云api获取ecs主机信息
  4. java 动态线程池_线程池的参数动态调整
  5. python数据分析 - T检验与F检验:二组数据那个更好?(一)
  6. 【场景削减】拉丁超立方抽样方法场景削减(Matlab代码实现)
  7. android搜索功能以及显示历史纪录带清除按钮
  8. 小学生打扫计算机教室的简报,简报第33期:我校开展“清扫校园”卫生大扫除活动...
  9. 我从外包公司辞职了!
  10. 免费的高匿名爬虫代理池不求人|高可用、高匿名、代理池详解及搭建推荐