<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dbtxdxy的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/dbtxdxy</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; dbtxdxy]]></copyright><item><title><![CDATA[【猫猫的Unity Shader之旅】之高斯模糊]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/78151936</link><guid>https://blog.csdn.net/dbtxdxy/article/details/78151936</guid><author>dbtxdxy</author><pubDate>Mon, 02 Oct 2017 18:20:36 +0800</pubDate><description><![CDATA[在初识屏幕特效这篇文章我们已经讲过如果在Unity中通过C#脚本和Shader配合实现最简单的屏幕特效，但是这个特效过于简单了，只是对最后将要渲染到屏幕上的颜色(即图像，或者说一张2D纹理)进行了简单的修正。由于屏幕特效本质上是对将要渲染到屏幕上的图像进行处理，所以屏幕特效用到的很多技术都是从图像处理来的，于是乎也就需要一点点(许多多)数学知识。什么是高斯模糊在谈什么是高斯模糊之前我们先来看看什么是]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之光照系统初探]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/77924693</link><guid>https://blog.csdn.net/dbtxdxy/article/details/77924693</guid><author>dbtxdxy</author><pubDate>Sun, 10 Sep 2017 20:22:13 +0800</pubDate><description><![CDATA[两年没写博客了，现在大家普遍都用上Unity5以上的版本了，所以猫猫准备使用最新的Unity版本继续自己的Shader之旅。有人问猫猫这么长时间都干嘛去了，我只能说，当然是把妹去了…　　Unity的光照系统很复杂，一方面是Unity对渲染封装的比较严实，另一方面是官方给出的资料比较少。Unity似乎不想让我们了解渲染的更多细节，而是希望我们只要会用相对简单的Surface Shader进行“填空”就]]></description><category></category></item><item><title><![CDATA[uLua拆分MonoBehavior逻辑]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/47708321</link><guid>https://blog.csdn.net/dbtxdxy/article/details/47708321</guid><author>dbtxdxy</author><pubDate>Sun, 16 Aug 2015 22:34:41 +0800</pubDate><description><![CDATA[最近项目准备用uLua实现部分代码热更新。于是去了解了一下uLua的使用方法。既然是项目后期想用uLua，自然有不少代码需要改造，我看了一下最简单的就是先从MonoBehavior开始改造。项目中有不少直接挂在GameObject上的，其中的逻辑相对比较独立，就先从这个开始试一下。　　实验用的脚本长这样：using UnityEngine;
using System.Collections;
usi]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之Vertex&Fragment Shader下的透明]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/47403505</link><guid>https://blog.csdn.net/dbtxdxy/article/details/47403505</guid><author>dbtxdxy</author><pubDate>Mon, 10 Aug 2015 19:37:56 +0800</pubDate><description><![CDATA[两种方式的透明　　在这篇文章里面提到，透明有两种方式，一种被称作Alpha Test方式，另一种是Alpha Blending方式。　　Alpha Test方式会在Fragment阶段根据Alpha值进行比较，不满足条件的片段会被直接Pass掉。这种处理方式要么透明要么不透明，比较决绝，不能实现半透明效果，并且在移动端会有比较严重的性能问题，个人认为唯一的好处是不会写入深度缓冲区(可以认为那些片段从]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之纹理映射]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/46954417</link><guid>https://blog.csdn.net/dbtxdxy/article/details/46954417</guid><author>dbtxdxy</author><pubDate>Sun, 19 Jul 2015 13:46:59 +0800</pubDate><description><![CDATA[纹理映射原理　　纹理映射通俗点讲就是把纹理贴图“覆盖”到物体表面。纹理坐标用来表示网格上的顶点与纹理上的坐标的对应关系，用一组二元数表示，分别称作S和T，或者x和y，或者U和V，说的都是它们啦。这感觉就像把一个气球一样材质的图片覆盖到物体上，并且这种材质上任何几个点都可以任意拉伸或者压缩，不用担心会破，可以想象一下这种感觉。获得纹理坐标　　模型可以提供纹理坐标，我们只需要将坐标从顶点函数传到片段函数]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之Phong高光]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/46849417</link><guid>https://blog.csdn.net/dbtxdxy/article/details/46849417</guid><author>dbtxdxy</author><pubDate>Sun, 12 Jul 2015 12:39:25 +0800</pubDate><description><![CDATA[Phong光照方程　　之前我们探讨过一些基于Surface Shader的高光知识，现在我们深入来了解其中的一种光照类型：Phong光照。　　我们知道，高光其实是描述了一种较为理想的情况下，大部分光线都沿着与入射角相等的反射方向照射，也就是说，当我们的眼睛正好在反射方向上时，可以看到大部分光线，当眼睛偏离这个方向时，亮度就会急剧下降，Phong光照就是用来描述这种情况的。Phong光照的光照方程如下]]></description><category></category></item><item><title><![CDATA[批量拆分图片透明通道]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/46766411</link><guid>https://blog.csdn.net/dbtxdxy/article/details/46766411</guid><author>dbtxdxy</author><pubDate>Sun, 05 Jul 2015 22:17:39 +0800</pubDate><description><![CDATA[最近项目中遇到图片内存占用太大的问题。一种思路是将一张带有透明通道的图片拆分成两张，一张只包含RGB三个通道，另外一张只记录原图的A通道信息(可以用RGB任意通道)，这样在Unity中经过压缩后的两幅图的大小也远比原来的带透明的图片小。于是自己实现了个cpp版的批量处理工具，话说好久不写cpp了写起来好难过啊。 　　这次用到的库是FreeImage。FreeImage是个轻量级的图像处理库，可以很方]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之双面材质和多Pass渲染]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/46309361</link><guid>https://blog.csdn.net/dbtxdxy/article/details/46309361</guid><author>dbtxdxy</author><pubDate>Mon, 01 Jun 2015 13:35:13 +0800</pubDate><description><![CDATA[默认情况下，我们编写的Shader都只对模型的正面进行渲染，因为大多数模型都是封闭的，我们看不到反面。在实际的开发过程中，也经常会遇到需要正反面都渲染的时候，比如开发手游的时候经常需要用一个面片+透明的方式表示远处的植物和围墙，如果我们用默认的单面渲染，从另一面就无法看到，只能通过增加一倍面数来实现。通过Cull语句实现双面材质　　实现双面渲染最简单的方法是用Cull Off。“Cull”意为“剔除]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之Blend语句]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/45942107</link><guid>https://blog.csdn.net/dbtxdxy/article/details/45942107</guid><author>dbtxdxy</author><pubDate>Sun, 24 May 2015 01:33:16 +0800</pubDate><description><![CDATA[上回说过，片段经过fragment处理后，会经过混合处理，最终变为缓冲区中的颜色数据。这里的混合，指的是处理后的片段颜色与已经存在于缓冲区中的颜色进行混合。具体的混合规则使用Blend语句来指定。Blend {code for SrcFactor} {code for DstFactor}　　这里的code for SrcFactor和DstFactor指的是下面表格的内容：　　　　当使用Blend]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之可编程 Shader初步]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/45789627</link><guid>https://blog.csdn.net/dbtxdxy/article/details/45789627</guid><author>dbtxdxy</author><pubDate>Sun, 17 May 2015 16:11:30 +0800</pubDate><description><![CDATA[可编程Shader，通常也被叫做Vertex&Fragment Shader，是比Surface Shader更灵活的一种Unity Shader形态。使用可编程Shader，可以实现对最终效果的更精确的控制，然而，代价就是需要关注更多的细节。一个最简单的可编程Shader　　作为第一个例子，我们实现了一个简单的自发光效果，它甚至没有Surface Shader的第一个例子华丽，因为没有Lamber]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之使用顶点的世界坐标]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/45679371</link><guid>https://blog.csdn.net/dbtxdxy/article/details/45679371</guid><author>dbtxdxy</author><pubDate>Wed, 13 May 2015 00:28:14 +0800</pubDate><description><![CDATA[在顶点运算阶段，我们可以得到每个顶点的位置，利用这些位置可以实现非常不错的效果访问顶点坐标 　　为了使用顶点坐标，我们需要使用顶点函数，将顶点坐标传入Input结果，再传入surf中进行处理。当然，要记得在Input中添加相应分量。void Myvert(inout appdata_full v, out Input IN)
{
    UNITY_INITIALIZE_OUTPUT(Input,]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之混合效果]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/45422989</link><guid>https://blog.csdn.net/dbtxdxy/article/details/45422989</guid><author>dbtxdxy</author><pubDate>Fri, 01 May 2015 22:49:29 +0800</pubDate><description><![CDATA[今天的好消息是，模型不再用立方体啦，也不是球和Plane，那些太土了，体现不出Shader的高大上有木有。囧了个囧，咳咳，我们是做学问，不要在意这些细节……　　好吧，我们这次的主角是Unity娘，大家到Asset Store可以免费下载到这个萌妹子~　　勤劳的Shader君　　之前也有说过，我们的Shader最终任务是要计算颜色，但是为了最终的显示效果让老板满意，Shader君也算是煞费苦心啦。没办]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之玻璃材质]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/45302087</link><guid>https://blog.csdn.net/dbtxdxy/article/details/45302087</guid><author>dbtxdxy</author><pubDate>Mon, 27 Apr 2015 01:40:28 +0800</pubDate><description><![CDATA[今天我们用学过的Shader知识实现一个简单的玻璃材质。首先，玻璃是半透明的　　玻璃最主要的特点就是它是透明的，不同的玻璃有不同的不透明度，水杯的透明度比较低，而装药品的棕色玻璃瓶不透明度就比较高。当然，玻璃也有一定的颜色。利用透明，我们可以这样实现玻璃材质：Shader "Custom/GlassShader" {
    Properties {
        _MainTint("Main]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之初识屏幕特效]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/45138787</link><guid>https://blog.csdn.net/dbtxdxy/article/details/45138787</guid><author>dbtxdxy</author><pubDate>Mon, 20 Apr 2015 01:28:24 +0800</pubDate><description><![CDATA[Shader除了可以处理模型的显示效果外，还有一个腻害的功能就是对要渲染的画面进行整体的处理，也就是屏幕特效。常见的比如《鬼泣4》里的动态模糊效果，景深效果，还有一些全局的颜色矫正，比如可以做出像《英雄联盟》中英雄死亡后的屏幕变灰的效果。Unity中实现屏幕特效需要用到一个脚本和一个Shader来完成。利用脚本搭建一个屏幕特效系统　　要实现屏幕特效，首先需要面临的一个问题是特效作用于何处。既然说屏幕]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之扭曲模型]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/45014783</link><guid>https://blog.csdn.net/dbtxdxy/article/details/45014783</guid><author>dbtxdxy</author><pubDate>Sun, 12 Apr 2015 22:10:00 +0800</pubDate><description><![CDATA[之前我们介绍的一些Shader效果都是在surf函数中做文章，也就是对渲染过程中的片段进行操作，实现的是模型表面的一些显示效果。然而，Unity Shader还提供对顶点阶段进行控制，来实现顶点的位置，颜色，法线等信息的修改。一个简单的例子　　之前我们给过一个完整的Shader，用#pragma可以指定顶点函数。我们可以写一个简单的顶点函数，它什么也没有做：Shader "Custom/VertSh]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之透明材质]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/44986755</link><guid>https://blog.csdn.net/dbtxdxy/article/details/44986755</guid><author>dbtxdxy</author><pubDate>Fri, 10 Apr 2015 23:53:48 +0800</pubDate><description><![CDATA[现实生活中有许多半透明的情形：玻璃、饮料瓶、塑料袋等等。半透明一个很重要的特点就是可以显示它后面的物体的部分颜色。这个“部分”具体是多少我们常用透明度来表示。一个简单的透明例子　　想做出透明效果，第一步需要通知Shader我们要使用透明效果了。最简单的方法是在#pragma后面增加一个alpha参数，例如#pragma surface surf Lambert alpha。　　开启透明后，只要对Su]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之反光材质]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/44949177</link><guid>https://blog.csdn.net/dbtxdxy/article/details/44949177</guid><author>dbtxdxy</author><pubDate>Wed, 08 Apr 2015 23:53:39 +0800</pubDate><description><![CDATA[利用天空盒实现简单的反光效果　　现实生活中有许多反射的例子，镜子、平静的水面、光滑的金属表面都有或多或少的反射效果，一种简单的模拟这种现象的做法是利用天空盒和Input结构中的worldRefl变量。　　为了使用天空盒资源，我们可以导入官方的Skyboxes资源包，然后自己创建一个天空盒资源。一个天空盒资源需要六张贴图，分别表示盒子的六个面。　　　　worldRefl表示世界空间中的反射向量，关于这]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之高光材质]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/44910025</link><guid>https://blog.csdn.net/dbtxdxy/article/details/44910025</guid><author>dbtxdxy</author><pubDate>Tue, 07 Apr 2015 00:23:34 +0800</pubDate><description><![CDATA[之前我们的Shader用的光照模型都是Lambert，这种光照表示的是一种漫反射的情况。所谓的漫反射，表示的是光线照射在粗糙的表面的情况。由于表面粗糙，根据反射的规律，光线会被反射到各个方向。现实生活中有许多漫反射的情况，木头桌子，岩石，墙面，都是漫反射。　　但是只有漫反射是不够的，现实中还有许多其他的情况。其中一种就是我们今天讨论的高光情况，高光其实表示的是一种接近于镜面反射的效果。对于镜面反射，]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之UV动画]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/44737133</link><guid>https://blog.csdn.net/dbtxdxy/article/details/44737133</guid><author>dbtxdxy</author><pubDate>Mon, 30 Mar 2015 00:13:57 +0800</pubDate><description><![CDATA[UV动画是一种常用的渲染技巧，经常用来描述水的流动、霓虹灯的闪烁等。实现的原理就是动态修改贴图的UV坐标，使物体表面产生变化。贴图坐标　　说到UV动画就不得不多说一点贴图了。我们知道，贴图是覆盖在模型表面用来描述模型表面细节的2D图片，那么贴图是怎么覆盖到模型上的呢？我们知道模型是由很多顶点组成的，这些顶点，三个一个组组成了若干三角形，正是这些三角形构成了模型的表面(三个点确定一个面嘛)，这样的三个]]></description><category></category></item><item><title><![CDATA[【猫猫的Unity Shader之旅】之法线贴图的运用]]></title><link>https://blog.csdn.net/dbtxdxy/article/details/44699161</link><guid>https://blog.csdn.net/dbtxdxy/article/details/44699161</guid><author>dbtxdxy</author><pubDate>Sat, 28 Mar 2015 10:29:56 +0800</pubDate><description><![CDATA[前几篇文章都在讲原理性的东西，不知道大家有没有烦。其实，当对Shader了解越来越多之后，就会越来越发现原理的重要性。建议大家学了一些Unity Shader的用法之后，多了解一点图形学知识，勿筑台于浮沙。为什么需要法线贴图　　在实际的开发过程中，我们经常会遇到这样的矛盾：一方面希望模型的显示效果好，另一方面又希望模型具有较少的面数，节省开发成本和运行效率。例如我们现在要做一面砖墙，思路可能是这样的]]></description><category></category></item></channel></rss>