
UnityShader
文章平均质量分 83
本专栏内容为《UnityShader入门精要》和《着色器和屏幕特效》的读书笔记。其中,《UnityShader入门精要》主要讲顶点和片元着色器,而《着色器和屏幕特效》主要讲表面着色器。适合需要用Unity做特效的小伙伴~
Real_JumpChen
这个作者很懒,什么都没留下…
展开
-
3D图形渲染管线图
放三张3D图形渲染管线图,自己领会:原创 2017-10-05 20:50:30 · 709 阅读 · 0 评论 -
学习UnityShader中常用的函数
今天给大家列出来shader中常用的一些函数,函数后面有释义,大家可以打印出来,或者在写shader的时候来这篇文章查阅,看看你需要用到哪些。Cg提供了一系列内建的标准函数。这些函数用于执行数学上的通用计算或通用算法(纹理映射等), 有些函数直接和 GPU 指令相对应,所以执行效率非常高。这些函数来源于文档,我为大家筛选出了常用的,去掉了基本用不到的函数。数学函数:abs(x)转载 2017-10-06 16:50:15 · 733 阅读 · 1 评论 -
《着色器和屏幕特效》读书笔记第一章-创建一个着色器
《着色器和屏幕特效》读书笔记第一章-创建一个着色器 本书版本为“占红来 译”版,笔记会持续更新,有错误的地方欢迎指正,谢谢!引言着色器就是Shader,它是一种特殊的程序,主要用来模拟光照效果。创建基本的标准着色器渲染器决定了物体在屏幕上呈现出来的外观,每个3D模型都有一个名为MeshRenderer的渲染器。一个物体只能有一个渲染器,但一个渲染器可以有多种材质。每一种材质就是一个着色器呈现出来的原创 2017-10-02 20:04:29 · 495 阅读 · 0 评论 -
《着色器和屏幕特效》读书笔记第二章-表面着色器和纹理映射
本书版本为“占红来 译”版,笔记会持续更新,有错误的地方欢迎指正,谢谢!引言表面着色器是Unity中主要使用的一种着色器,使用表面着色器有两个步骤:给材质的物理属性赋值(比如漫反射颜色、光滑度等)。这些物理属性会在表面函数(surf())中赋值,之后,存储在表面输出(surface output)的结构中;表面输出(负责属性和光照模型之间的通信)会传递给光照模型。光照模型也是一个函数,该函数还依原创 2017-10-02 21:35:29 · 746 阅读 · 0 评论 -
《着色器和屏幕特效》读书笔记第三章-光照模型
本书版本为“占红来 译”版,笔记会持续更新,有错误的地方欢迎指正,谢谢!引言光照模型是用传入的属性来计算每个像素点上的最终着色的函数。创建自定义的漫反射光照模型基于朗伯(Lambert)反射的着色器称为非真实感着色器,漫反射光照模型实现了朗伯反射。现在我们自定义一个朗伯反射(部分代码): //使用自定义的光照模型。 #pragma surface surf SimpleLambert原创 2017-10-04 21:07:43 · 453 阅读 · 0 评论 -
《着色器和屏幕特效》读书笔记第四章-PBR
本书版本为“占红来 译”版,笔记会持续更新,有错误的地方欢迎指正,谢谢!引言PBR(Physically-Based Rendering):基于物理基础的渲染。Unity是如何做到PBR的:标准光照模型(Standard),用户可指定材质的物理属性;全局光照(GI),模拟物理世界中光线传播的技术。但是PBR和GI并不会自动让你的游戏美轮美奂,获得好的拟实感是一个颇具挑战性的工作。理解金属光泽属原创 2017-10-04 21:08:17 · 548 阅读 · 0 评论 -
《着色器和屏幕特效》读书笔记第五章-顶点函数
本书版本为“占红来 译”版,笔记会持续更新,有错误的地方欢迎指正,谢谢!引言着色器不仅能决定物体的外观,还能重新定义物体的形状。三维模型和一堆三角形的集合,三角形的每个顶点可以包含一些基础数据,通过这些数据就能渲染出该模型了。本文要讲述的是:如何获取这部分信息并使用之。在表面着色器中访问顶点的颜色一个顶点包含的信息:float4类型的颜色值;float3类型的顶点位置;float3类型的顶点法原创 2017-10-05 14:09:01 · 399 阅读 · 0 评论 -
《着色器和屏幕特效》读书笔记第六章-碎片着色器和抓取
本书版本为“占红来 译”版,笔记会持续更新,有错误的地方欢迎指正,谢谢!引言顶点和碎片着色器得不到判断光线在表面如何反射所需的物理属性信息,但它不受任何物理限制,对于某些非真实特效而言非常合适。顶点和碎片着色器的工作方式更接近于GPU的架构。这一章我们讲 抓取(grab pass) 技术,通过含有这个技术的着色器可以模拟出一些神奇的变形效果。理解顶点和碎片(片元)着色器顶点和碎片着色器的代码和表面着原创 2017-10-05 18:02:07 · 567 阅读 · 0 评论 -
《着色器和屏幕特效》读书笔记第七章-移动端着色器优化
本书版本为“占红来 译”版,笔记会持续更新,有错误的地方欢迎指正,谢谢!引言游戏制作中都会达成一个共识,就是需要优化着色器或使用更少的纹理来实现同样的效果。有了这个意识后,你在写着色器的时候,都会有意识地做一些改变。什么是轻量着色器着色器效率低的原因:变量的内存消耗过大;使用纹理数量过多。针对第二点的解决方法大家都懂,接下来就说说第一点的解决方法:优化变量类型,使他们在处理数据时占用更少的内原创 2017-10-05 18:06:15 · 621 阅读 · 0 评论 -
《着色器和屏幕特效》读书笔记第八章-用Unity的渲染纹理实现屏幕特效
本书版本为“占红来 译”版,笔记会持续更新,有错误的地方欢迎指正,谢谢!引言屏幕特效,又称后期特效。大多数现代的游戏都运用了屏幕特效,比如:景深(DOF)效果、光晕效果或颜色矫正效果等。创建屏幕特效的脚本系统通过屏幕特效,可以将屏幕作为一个整体进行修改,需要创建一个C#脚本来抓取当前游戏的渲染纹理,并将其传给着色器,着色器处理(像素级别的操作)该渲染纹理后,再将修改后的纹理(也就是每个像素的颜色)传原创 2017-10-06 19:48:13 · 535 阅读 · 0 评论 -
《着色器和屏幕特效》读书笔记第九章-游戏可玩性和屏幕特效
本书版本为“占红来 译”版,笔记会持续更新,有错误的地方欢迎指正,谢谢!引言游戏常用屏幕特效来创造一种沉浸的感觉,屏幕特效可以把一个平静祥和的环境变成一个紧张激烈的环境,而开发者需要做的仅仅是改变一下屏幕的画风。以下两种效果,需要用到的时候再去查查具体怎么写的吧,我在这里就提一下思路~创建老电影风格的屏幕特效前期准备: 1.准备一张晕影;2.准备一张灰尘和划痕图。代码编写: 和第八章的案例是同样原创 2017-10-07 10:58:54 · 478 阅读 · 0 评论 -
《着色器和屏幕特效》读书笔记第十章-高级着色技术
本书版本为“占红来 译”版,笔记会持续更新,有错误的地方欢迎指正,谢谢!引言在游戏中无论多么吸引眼球的特效都是将着色器技术用到了极致后得到的,你完全可以按着自己的想法加以试验和探索,有了最后一章的知识,你就能随心所欲地创建你想要的材质了。使用Unity中内置的CgInclude文件先了解Unity为我们提供了哪些CgInclude文件,正是这些文件才让我们编写着色器更高校,它们在Unity\Edit原创 2017-10-07 11:02:04 · 397 阅读 · 0 评论 -
【Unity Shader入门精要】— 渲染流水线
内容会持续更新,有错误的地方欢迎指正,谢谢!引言Shader只是整个渲染流程的一个子部分,想要学习它,我们就需要了解整个渲染流程是如何进行的。何为渲染流水线渲染流水线的工作任务:由一个三维场景出发,渲染出一张二维图像。 这个工作通常由CPU和GPU共同来完成。《Real-Time Rendering》中将渲染流程分成三个阶段(这是一条概念流水线):应用阶段:CP...原创 2017-10-15 13:20:06 · 579 阅读 · 0 评论 -
【Unity Shader入门精要】— Unity Shader基础
内容会持续更新,有错误的地方欢迎指正,谢谢!引言Unity Shader是Unity为开发者提供的高层级的渲染抽象层,它让开发者更加轻松地管理着色器代码以及渲染设置(如开启/关闭混合、深度测试、设置渲染状态等)。Unity Shader的概述Unity为我们准备的常用的三种Shader文件: 1. Standard Surface Shader:表面着色器(该着色器包含光照模型,使用了PBR的渲染原创 2017-10-18 14:05:31 · 2206 阅读 · 0 评论 -
【Unity Shader入门精要】— 写Shader所需的数学基础
内容会持续更新,有错误的地方欢迎指正,谢谢!引言一些很简单的线性代数的基本知识:矢量和矩阵。So Easy~笛卡尔坐标系两种三维坐标系:左手坐标系和右手坐标系。 在Unity中: 对于模型空间和世界空间,使用的是左手坐标系;对于观察空间,使用的是右手坐标系。点和矢量单位矢量:法线方向、光源方向等矢量不一定是归一化后的矢量,由于我们的计算往往要求矢量为单位矢量,因此,在使用前要对这些矢量进行归原创 2017-10-18 16:44:17 · 1475 阅读 · 0 评论 -
【Unity Shader入门精要】— 开始Unity Shader之旅
内容会持续更新,有错误的地方欢迎指正,谢谢!简单的顶点/片元着色器顶点/片元着色器的基本结构Shader "Custom/Simple Shader" { SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment fr原创 2017-10-19 02:05:23 · 648 阅读 · 0 评论 -
【Unity Shader入门精要】— Unity中的基础光照
内容会持续更新,有错误的地方欢迎指正,谢谢!引言计算机图形学的第一定律:如果它看起来是对的,那么它就是对的。标准光照模型应用最普遍的光照模型。它把进入到摄像机的光线分成4部分,每部分使用一种方法计算它的贡献度: a、自发光(emissive):大多数物体都不用添加自发光。 b、高光反射(specular):当光线照射到模型表面时,该表面会在完全镜面反射方向散射多少辐射量。 c、漫反射(diff原创 2017-11-04 13:21:43 · 528 阅读 · 0 评论 -
【Unity Shader入门精要】— 基础纹理
内容会持续更新,有错误的地方欢迎指正,谢谢!引言纹理是如何贴到模型上的:利用纹理映射技术。 纹理映射技术:把纹理想成一张弹性很好的薄膜,然后让顶点UV坐标和纹理坐标对应,把这张薄膜蒙在模型上~单张纹理通常会使用单张纹理来代替物体的漫反射颜色。纹理的属性纹理从广义上讲不是一个普通的图片,我们今后会遇到各种功能性纹理,比如法线纹理,立方体纹理等,我们在Unity中选中一个纹理,属性面板会看到很多属性。原创 2017-11-04 14:42:55 · 640 阅读 · 0 评论 -
【Unity Shader入门精要】— 透明效果
内容会持续更新,有错误的地方欢迎指正,谢谢!引言在Unity中,我们通常使用两种方法来实现透明效果:第一种是使用透明度测试,这种方法其实无法得到真正的半透明效果;另一种是透明度混合,这种方法很棒。事实上,对于不透明物体,不考虑它们的渲染顺序也能得到正确的排序效果,这是由于强大的深度缓冲的存在。根据深度缓冲中的值来判断该片元距离摄像机的距离,当渲染一个片元时,需要把它的深度值和已经存在于深度缓冲中的值原创 2017-11-04 17:44:13 · 720 阅读 · 0 评论 -
【Unity Shader入门精要】— 中级篇
内容会持续更新,有错误的地方欢迎指正,谢谢!引言本书还有中级篇、高级篇、扩展篇,这篇文章我们来说说中级篇。考虑到内容较多,我在中级篇、高级篇、扩展篇博客里只列一些提纲和我自己的一些总结、领悟,具体实现方法,希望各位看客,购买乐乐女神的书,好好琢磨研究~更复杂的光照Unity的渲染路径Unity的渲染路径可以是:前向渲染路径 前向渲染路径有两种常用的处理光照(即照亮物体)的方式:逐顶点处理,逐像素原创 2017-11-04 17:45:40 · 600 阅读 · 0 评论 -
【Unity Shader入门精要】— 高级篇
内容会持续更新,有错误的地方欢迎指正,谢谢!引言本书还有高级篇、扩展篇,这篇文章我们来说说高级篇。考虑到内容较多,我在高级篇、扩展篇博客里只列一些提纲和我自己的一些总结、领悟,具体实现方法,希望各位看客,购买乐乐女神的书,好好琢磨研究~屏幕后处理效果屏幕后处理,通常指的是在渲染完整场景得到屏幕图像后,再对这个图像进行一系列操作,实现各种屏幕特效。可以为游戏画面添加更多艺术效果。可实现低级的边缘检测、原创 2017-11-04 21:28:20 · 3727 阅读 · 0 评论 -
【Unity Shader入门精要】— 扩展篇
内容会持续更新,有错误的地方欢迎指正,谢谢!引言本书还有扩展篇,这篇文章我们来说说扩展篇。考虑到内容较多,我在扩展篇博客里只列一些提纲和我自己的一些总结、领悟,具体实现方法,希望各位看客,购买乐乐女神的书,好好琢磨研究~Unity的表面着色器探秘说到表面着色器,怎么能不提《着色器和屏幕特效开发秘籍》这本书!表面着色器的各种细节和应用请参考我的系列博客,这里放出一篇文章的链接出来:《着色器和屏幕特效》原创 2017-11-04 22:38:04 · 609 阅读 · 0 评论