Unity Shaders
文章平均质量分 81
妈妈说女孩子要自立自强
这个作者很懒,什么都没留下…
展开
-
【Unity Shader】自定义材质面板的小技巧
写在前面之前遇到过一些朋友问怎么在材质面板里定义类似于bool这种变量,控制一些代码的执行。我们当然可以写一个C#文件来自定义材质面板,就像Unity为Standard Shader写材质面板一样(你可以在built-in shader包里找到这些文件),但这样有时候太麻烦了。实际上,有一种更简单的方法,不需要写额外的C#文件就可以直接在shader里定义类似bool、enum这种简单的变量,Uni原创 2016-05-15 20:21:38 · 48375 阅读 · 14 评论 -
【Unity Shaders】Using Textures for Effects——通过修改UV坐标来滚动textures
题外话新年第一篇!在此就献给了这个系列。马上就可以放假回家了,虽然还有一些事情需要处理,但是能和家人团聚实在是件很难得的事了。希望所有朋友也能记得多回家看看,借最近很热门的电影《私人定制》(我没看过甲方乙方什么的,觉得这个还不错啦)中的插曲《时间都去哪儿了》,不要等到时间都不见了才想起家人,希望朋友们和朋友的家人们在新年里都能幸福!门前老树长新芽院里枯木又开花半生存了多少话原创 2014-01-02 15:05:08 · 25280 阅读 · 24 评论 -
【Unity Shaders】ShadowGun系列之二——雾和体积光
写在前面体积光,这个名称是God Rays的中文翻译,感觉不是很形象。God Rays其实是Crepuscular rays在图形学中的说法,而Crepuscular rays的意思是云隙光、曙光、曙暮辉的意思。在现实生活中,它的样子大概是下面这样:体积光的翻译大概就是由于这种光可见好像有体积似的。这些光一般是由于强烈的阳光从一些缝隙,如云间缝隙、窗户的缝隙中,透到较暗的环境中所造成的。如果要真实原创 2014-12-22 23:30:43 · 53031 阅读 · 17 评论 -
【Unity Shaders】Transparency —— 使用alpha通道创建透明效果
本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。这里是本书所有的插图。这里是本书所需的代码和资源(当然你也可以从官网下载)。========================================== 分割线 ==========================================写在前面原创 2014-06-05 16:07:37 · 71149 阅读 · 11 评论 -
【Unity Shaders】Alpha Test和Alpha Blending
写在前面关于alpha的问题一直是个比较容易摸不清头脑的事情,尤其是涉及到半透明问题的时候,总是不知道为什么A就遮挡了B,而B明明在A前面。这篇文章就总结一下我现在的认识~Alpha Test和Alpha Blending是两种处理透明的方法。Alpha Test采用一种很霸道极端的机制,只要一个像素的alpha不满足条件,那么它就会被fragment shader舍弃,“我才不要你类!”;否则,原创 2014-11-29 21:55:10 · 60643 阅读 · 31 评论 -
【Unity Shaders】Shader中的光照
写在前面自己写过Vertex & Fragment Shader的童鞋,大概都会对Unity的光照痛恨不已。当然,我相信这是因为我们写得少。。。不过这也是由于官方文档对这方面介绍很少的缘故,导致我们无法自如地处理很多常见的光照变量。这篇我们就来讨论下Unity内置的一些光照变量和函数到底怎么用。以下内容均建立在Forward Rendering Path的基础上。Forward Rendering原创 2015-01-07 22:53:20 · 56159 阅读 · 23 评论 -
【Unity Shader实战】卡通风格的Shader(一)
呜,其实很早就看到了这类Shader,原创 2014-07-22 16:08:29 · 77164 阅读 · 31 评论 -
【Unity Shader实战】卡通风格的Shader(二)
写在前面好久没写博客了,一定是因为课程作业比较多,一定不是因为我懒,恩恩。三个月以前,在一篇讲卡通风格的Shader的最后,我们说到在Surface Shader中实现描边效果的弊端,也就是只对表面平缓的模型有效。这是因为我们是依赖法线和视角的点乘结果来进行描边判断的,因此,对于那些平整的表面,它们的法线通常是一个常量或者会发生突变(例如立方体的每个面),这样就会导致最后的效果并非如我们所愿。如下原创 2014-11-14 17:58:54 · 32708 阅读 · 11 评论 -
【Unity Shaders】Unity里的雾效模拟
写在前面熟悉Unity的都知道,Unity可以进行基本的雾效模拟。所谓雾效,就是在远离我们视角的方向上,物体看起来像被蒙上了某种颜色(通常是灰色)。这种技术的实现实际上非常简单,就是根据物体距离摄像机的远近,来混合雾的颜色和物体本身的颜色即可。Unity里设置雾效有两种方式,一种最简单的就是直接开启全局雾效,也就是在Edit->Render Settings里配置,如下图所示:而我们只需要把“Fo原创 2014-11-29 15:25:20 · 39575 阅读 · 8 评论 -
【Unity Shaders】ShadowGun系列之一——飞机坠毁的浓烟效果
写在前面最近一直在思考下面的学习该怎么进行,当然自己有在一边做项目一边学OpenGL,偶尔翻翻论文之类的。但是,写shader是一个需要实战和动手经验的过程,而模仿是前期学习的必经之路。很多人都会问,怎么学shader,看什么书。当然我经验也不够,目前的路线是:掌握一门着色语言+读几本经典书籍+学习优秀的shader实例+动手实践+动手实践+动手实践。每一个都不容易,所以学shader是一个漫长而原创 2014-11-27 22:40:06 · 17344 阅读 · 17 评论 -
【Shader拓展】Illustrative Rendering in Team Fortress 2
早在使用ramp texture控制di'fu'f原创 2014-10-19 11:42:55 · 11295 阅读 · 6 评论 -
【Unity Shaders】Diffuse Shading——向Surface Shader添加properties
这次是在上一篇的基础上,进一步学习Unity Shaders的Properties。准备工作我们假设你已经进行了上一篇里的工作:创建了一个BasicDiffuse.shader,并且看到了Unity自动为你创建的代码:Shader "Custom/BasicDiffuse" { Properties { _MainTex ("Base (RGB)", 2D) =原创 2013-12-06 00:21:44 · 12819 阅读 · 11 评论 -
【Unity Shaders】初探Surface Shader背后的机制
转载请注明出处!写在前面一直以来,Unity Surface Shader背后的机制一直是初学者为之困惑的地方。Unity Surface Shader在Unity 3.0的时候被开放给公众使用,其宣传手段也是号称让所有人都可以轻松地写shader。但由于资料缺乏,很多人知其然不知其所以然,无法理解Unity Surface Shader在背后为我们做了哪些事情。前几天一直被问到一个问题,为什么我原创 2014-10-11 15:32:09 · 66805 阅读 · 27 评论 -
【Unity Shaders】使用CgInclude让你的Shader模块化——创建CgInclude文件存储光照模型
本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。这里是本书所有的插图。这里是本书所需的代码和资源(当然你也可以从官网下载)。========================================== 分割线 ==========================================写在前面原创 2014-08-29 11:26:45 · 20967 阅读 · 10 评论 -
【Unity Shaders】Lighting Models —— 光照模型之Lit Sphere
写在前面照亮的球体(Lit Sphere,翻译过来很怪)类型的光照模型是一种非常有趣的基于图像的光照。实际上,我们可以使用一张2D贴图来完整地烘焙我们的光照。你可以得到Zbrush这个软件实现的相同效果。如果你对Zbrush的MatCaps(Material Captures)很熟悉,那么恭喜你,被照亮的球体是相同的实现原理。我们可以创建一个贴图,然后完全照搬各种烘焙类型,原创 2014-05-20 22:08:40 · 16229 阅读 · 4 评论 -
【我的书】Unity Shader的书 — 目录(2016.5.19最后一次更新)
写在前面 感谢所有点进来看的朋友。没错,我目前打算写一本关于Unity Shader的书。出书的目的有下面几个:总结我接触Unity Shader以来的历程,给其他人一个借鉴。我非常明白学Shader的艰难,在群里也见了很多人提出的问题。我觉得学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文。。。这对我有什么好处呢?强迫我对知识进行梳理,对细节问题把握更清楚原创 2016-01-29 13:08:01 · 47439 阅读 · 339 评论 -
【Unity Shader】新书封面 — Low Polygon风格的渲染
写在前面最近又开心又担心,因为我的书马上就要上市了,开心当然是因为等了这么久终于可以如愿了,担心是因为不少人对它的期待都很大,我第一次写书,能力也有限,不知道能不能让大家满意,让大家也都喜欢上它。不过有不少朋友和前辈鼓励我,还是很开心滴~之前有一些朋友觉得这次封面很漂亮,问我书的封面是不是我渲染的,以及怎么渲染的:其实这封面并不是在Unity里渲染的,是男朋友在C4D里面渲染的。我原创 2016-05-27 13:49:34 · 23646 阅读 · 52 评论 -
【Unity Shader】Unity Chan的卡通材质
写在前面时隔两个月我终于来更新博客了,之前一直在学东西,做一些项目,感觉没什么可以分享的就一直没写。本来之前打算写云彩渲染或是Compute Shader的,觉得时间比较长所以打算先写个简单的。今天扫项目的时候看到了很早之前下载的Unity Chan的项目,其实很早之前就想要分析下里面的卡通效果是怎么做的。Unity Chan想必很多人都看到或听过Unity Chan,也可以说是Unity酱、Uni原创 2016-04-03 19:58:09 · 36632 阅读 · 12 评论 -
【Unity Shader】2D动态云彩
写在前面赶在年前写一篇文章。之前翻看2015年的SIGGRAPH Course(关于渲染的可以去selfshadow的博客里找到,很全)的时候看到了关于体积云的渲染。这个课程讲述了开发者为游戏《地平线:黎明时分》所开发的动态天气系统,重点讲了里面的云的模拟和渲染,很有参考价值。其中,云的建模主要使用了raymarching的方法,他们的启发应该和shadertoy有关,但多了更多的程序控制和艺术效果原创 2016-01-29 12:58:01 · 25955 阅读 · 13 评论 -
【NPR】卡通渲染
写在前面我的博客讲过好几篇卡通渲染了,比如【Unity Shader实战】卡通风格的Shader(一)、【Unity Shader实战】卡通风格的Shader(二)、【NPR】漫谈轮廓线的渲染、【Shader拓展】Illustrative Rendering in Team Fortress 2。后来,我搞了个所谓的NPR实验室,来实现一些论文里或者网络博客里讲到的NPR渲染算法,这里面包含了一些卡原创 2015-12-04 12:14:29 · 45531 阅读 · 8 评论 -
【Unity Shaders】Reflecting Your World —— Unity3D中的遮罩反射(Masking Reflections)
写在前面有时候,我们并不想让物体的所有部分都反射,例如一个物体可能某些部分是玻璃材质的可以反射,而有些是塑料材质就不会反射。在这篇教程里,我们将会学习一种技术来控制反射范围,这是通过一张texture作为掩码(mask)来实现的。也就是说,我们可以使用一张texture的灰度值去决定该平面该如何反射,这意味着,一个为黑色的灰度值对应一个不会反射的子平面,而一个白色的灰度值对应一个完原创 2014-04-15 12:48:49 · 11458 阅读 · 4 评论 -
【Unity Shaders】Vertex & Fragment Shader入门
写在前面原创 2014-10-21 14:54:18 · 59631 阅读 · 29 评论 -
【Unity Shaders】法线纹理(Normal Mapping)的实现细节
写在前面写这篇的目的是为了总结我长期以来的混乱。虽然题目是“法线纹理的实现细节”,但其实我想讲的是如何在shader中编程正确使用法线进行光照计算。这里面最让人头大的就是各种矩阵运算和坐标系之间的转换,很容易因为坐标系错误而造成光照结果的错误。原创 2014-12-09 14:55:49 · 55595 阅读 · 42 评论 -
【NPR】漫谈轮廓线的渲染
写在前面 好久没写文章。最近在看《Real Time Rendering, third edition》这本书,看到了NPR这一章就想顺便记录下一些常见的轮廓线渲染的方法。在非真实感渲染中,对轮廓线的渲染是一个应用非常广泛的手法。根据《Real Time Rendering, third edition》一书的总结,在这篇文章里介绍几种常见的渲染方法。当然,这里只是抛砖引玉,如果要用于实际项目中可原创 2015-05-10 12:28:22 · 26440 阅读 · 11 评论 -
【NPR】非真实感渲染实验室
写在前面 前几天在知乎看到一个问题——关于非实感图形学或者风格化渲染有哪些好的书或者paper,我刚好接触过一些就去里面回答了一下。答完以后突然想在Unity里搞一个这样的集锦,把一些简单的NPR论文或者教程在Unity里实现一下。于是这两天就做了一下。我把这个项目放到了GitHub(https://github.com/candycat1992/NPR_Lab)上,有兴趣的同学可以去看一下原创 2015-08-04 22:51:48 · 22482 阅读 · 12 评论 -
【Unity Shaders】使用CgInclude让你的Shader模块化——Unity内置的CgInclude文件
本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。这里是本书所有的插图。这里是本书所需的代码和资源(当然你也可以从官网下载)。========================================== 分割线 ==========================================写在前面原创 2014-08-25 20:19:09 · 16446 阅读 · 7 评论 -
【Unity Shaders】使用Unity Render Textures实现画面特效——画面特效中的亮度、饱和度和对比度
本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。这里是本书所有的插图。这里是本书所需的代码和资源(当然你也可以从官网下载)。========================================== 分割线 ==========================================写在前面原创 2014-09-17 10:43:37 · 13940 阅读 · 12 评论 -
【Unity Shaders】Diffuse Shading——使用2D ramp texture来创建一个假的BRDF(双向反射分布函数)
终于到了Diffuse Shading一章的最后一篇了!回忆一下,在上一篇中,一共学习了两种改善漫反射光照的方法:一种是完全根据感性认识,使用Half Lembert方法改变了光照值区间,使得物体颜色整体提亮;一种是通过一张渐变图,来控制光照值。这两种方法都只考虑到了入射光线和反射点所在的平面法向量的夹角,但是想象实际生活中我们观察一个物体,即便是在相同的光照下观察物体的同一点,如果我们观察位原创 2013-12-22 17:33:06 · 19972 阅读 · 38 评论 -
【Unity Shaders】《Unity Shaders and Effects Cookbook》总结篇
我的唠叨不知不觉,从发表第一篇关于《Unity Shaders and Effects Cookbook》已经快十个月了。一开始的初衷就是学习笔记,毕竟将来回过头去看的时候,再看英文难免有种急躁感。从一开始几乎只有我一个人在奋斗,到现在时不时有人学习留言或者发邮件鼓励我,能有人和我一起学习我已经很开心了。谢谢所有鼓励和支持我的人~我先说下我的博客里这个系列的特点~首先声明,这不是纯翻译,我的插图绝原创 2014-09-24 17:12:25 · 21265 阅读 · 16 评论 -
【Unity Shaders】Lighting Models 介绍
本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。这里是本书所有的插图。这里是本书所需的代码和资源(当然你也可以从官网下载)。========================================== 分割线 ==================================原创 2014-05-20 17:27:26 · 5376 阅读 · 6 评论 -
【Unity Shaders】Reflecting Your World(反射吧!)介绍
写在前面由于精力有限,看了下目录,决定还是先看平时用得上的内容。所以以后可能有的章节就不会写笔记了。介绍反射,是决定你的Shaders看起来是否逼真的一个非常重要的关键点。它的原理主要是根据物体周围的场景,让Shader反射这个世界的场景信息来模拟地面的反射现象。在这个部分中,我们将接触一个新的texture种类——Cubemap。这种类型的text原创 2014-03-17 21:52:50 · 8523 阅读 · 3 评论 -
【Unity Shaders】Reflecting Your World —— 在Unity3D中创建一个简单的动态Cubemap系统
本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。这里是本书所有的插图。这里是本书所需的代码和资源(当然你也可以从官网下载)。========================================== 分割线 ==================================原创 2014-04-28 18:29:32 · 11321 阅读 · 4 评论 -
【Unity Shaders】Diffuse Shading——在Surface Shader中使用properties
在上一篇中,我们已经向Surface Shader中添加了一些properties。在这篇教程里,我们将学习如何在Shader中访问和使用它们,以便通过调整Inspector中的变量来改变渲染效果。准备工作在上一篇结束后,我们的shader代码如下:Shader "Custom/BasicDiffuse" { Properties { _EmissiveCol原创 2013-12-16 17:24:09 · 12574 阅读 · 9 评论 -
【Unity Shaders】Diffuse Shading——创建一个基本的Surface Shader
这一次的工作非常简单,我们主要是为了了解Unity Shaders的基本工作原理。准备工作创建一个新的Unity Project在Assets目录下新建一个文件夹:Shaders在Assets目录下新建一个文件夹:Materials实现在Shaders文件夹下,点击右键新建一个Shader,命名为BasicDiffuse,并打开它原创 2013-12-05 00:46:26 · 19503 阅读 · 12 评论 -
【Unity Shaders】Diffuse Shading——创建一个自定义的diffuse lighting model(漫反射光照模型)
上一篇中,我们学了怎样在surface shader(这里即指surf函数)中使用自己定义的Properties变量。而在之前的学习中,我们实际上使用的都是Unity内置的Diffuse Lighting Model,即漫反射光照模型。这一次,我们将学习如何让Unity使用我们自己定义的光照模型进行渲染。准备工作使用上一篇结束时的shader代码即可。Shader原创 2013-12-20 15:01:41 · 17480 阅读 · 24 评论 -
【Unity Shaders】Using Textures for Effects——让sprite sheets动起来
题外话好久未更新,一些习惯还是应该要好好坚持啊。最近发现Android上一个很好的应用,希望每天可以坚持看一个视频,了解下最新的科技动态和演讲,也推荐给大家使用!这次内容主要讲如何使用sprite sheets制作2D动画。在Unity中,实际上已经有很多插件可以完成这个工作,例如2dTookit,新版的Unity中支持2D应该也会提供类似的功能了。虽然如此,我还是希望通过这篇文章原创 2014-01-22 22:09:39 · 14275 阅读 · 34 评论 -
【Unity Shaders】Using Textures for Effects——打包和混合textures
题外话好久没有更新博客!感觉又荒废了shader的学习,吼吼,还是得加油啊!这次的内容是打包合并textures。Textures不仅仅可以用来存储颜色信息,还可以存储很多数据信息。这些数据信息可以分别存储到R、G、B、A四个部分,然后再打包成一张Texture,像下图这样:为什么这样做有好处呢?在我们的应用中,textures的数目将很大程度上影响应用的性原创 2014-03-08 23:07:05 · 10880 阅读 · 21 评论 -
【Unity Shaders】Reflecting Your World —— 在Unity3D中创建Cubemaps
写在前面为了在Shaders中创建反射的效果,我们将首先开始学习如何创建我们自己的Cubemaps。当然,你可以在网上找到许多已经做好的Cubemaps,但是你很快就会想,怎么制作自己的Cubemaps,因为网上那些是不能反射你自己游戏中的场景的。制作你自己的Cubemaps是创建更真实的反射效果的关键。我们将会学习几个可以在Unity editor中直接使用的方法。另外,我们还将原创 2014-03-18 16:52:47 · 16457 阅读 · 20 评论 -
【Unity Shaders】Reflecting Your World —— Unity3D中的法线贴图和反射
本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。这里是本书所有的插图。这里是本书所需的代码和资源(当然你也可以从官网下载)。============================== 分割线 ==============================写在前面原创 2014-04-26 18:08:14 · 20161 阅读 · 4 评论 -
【Unity Shaders】概述及Diffuse Shading介绍
概述几个月以前我就一直在找关于Unity Shader相关的资料,大三的时候有一门叫《计算机图形学》,让我觉得如果游戏程序员要从beginner成长为advancer,就必须了解底层渲染的一些知识。Unity3D无疑是一个非常出色的游戏引擎,它让很多独立开发者真正能够独立开发一款让自己满意的游戏,而不需要考虑那些烦人的细节,正如Unity宣称的那样,让他们来做那些令人抓狂的事情吧!原创 2013-12-03 17:34:26 · 25028 阅读 · 20 评论