自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (18)
  • 收藏
  • 关注

原创 【猫猫的Unity Shader之旅】之高斯模糊

在初识屏幕特效这篇文章我们已经讲过如果在Unity中通过C#脚本和Shader配合实现最简单的屏幕特效,但是这个特效过于简单了,只是对最后将要渲染到屏幕上的颜色(即图像,或者说一张2D纹理)进行了简单的修正。由于屏幕特效本质上是对将要渲染到屏幕上的图像进行处理,所以屏幕特效用到的很多技术都是从图像处理来的,于是乎也就需要一点点(许多多)数学知识。什么是高斯模糊在谈什么是高斯模糊之前我们先来看看什么是

2017-10-02 18:20:36 1079 1

原创 【猫猫的Unity Shader之旅】之光照系统初探

两年没写博客了,现在大家普遍都用上Unity5以上的版本了,所以猫猫准备使用最新的Unity版本继续自己的Shader之旅。有人问猫猫这么长时间都干嘛去了,我只能说,当然是把妹去了…  Unity的光照系统很复杂,一方面是Unity对渲染封装的比较严实,另一方面是官方给出的资料比较少。Unity似乎不想让我们了解渲染的更多细节,而是希望我们只要会用相对简单的Surface Shader进行“填空”就

2017-09-10 20:22:13 465 1

原创 uLua拆分MonoBehavior逻辑

最近项目准备用uLua实现部分代码热更新。于是去了解了一下uLua的使用方法。既然是项目后期想用uLua,自然有不少代码需要改造,我看了一下最简单的就是先从MonoBehavior开始改造。项目中有不少直接挂在GameObject上的,其中的逻辑相对比较独立,就先从这个开始试一下。  实验用的脚本长这样:using UnityEngine;using System.Collections;usi

2015-08-16 22:34:41 1554 1

原创 【猫猫的Unity Shader之旅】之Vertex&Fragment Shader下的透明

两种方式的透明  在这篇文章里面提到,透明有两种方式,一种被称作Alpha Test方式,另一种是Alpha Blending方式。  Alpha Test方式会在Fragment阶段根据Alpha值进行比较,不满足条件的片段会被直接Pass掉。这种处理方式要么透明要么不透明,比较决绝,不能实现半透明效果,并且在移动端会有比较严重的性能问题,个人认为唯一的好处是不会写入深度缓冲区(可以认为那些片段从

2015-08-10 19:37:56 2715 2

原创 【猫猫的Unity Shader之旅】之纹理映射

纹理映射原理  纹理映射通俗点讲就是把纹理贴图“覆盖”到物体表面。纹理坐标用来表示网格上的顶点与纹理上的坐标的对应关系,用一组二元数表示,分别称作S和T,或者x和y,或者U和V,说的都是它们啦。这感觉就像把一个气球一样材质的图片覆盖到物体上,并且这种材质上任何几个点都可以任意拉伸或者压缩,不用担心会破,可以想象一下这种感觉。获得纹理坐标  模型可以提供纹理坐标,我们只需要将坐标从顶点函数传到片段函数

2015-07-19 13:46:59 3817

原创 【猫猫的Unity Shader之旅】之Phong高光

Phong光照方程  之前我们探讨过一些基于Surface Shader的高光知识,现在我们深入来了解其中的一种光照类型:Phong光照。  我们知道,高光其实是描述了一种较为理想的情况下,大部分光线都沿着与入射角相等的反射方向照射,也就是说,当我们的眼睛正好在反射方向上时,可以看到大部分光线,当眼睛偏离这个方向时,亮度就会急剧下降,Phong光照就是用来描述这种情况的。Phong光照的光照方程如下

2015-07-12 12:39:25 1732

原创 批量拆分图片透明通道

最近项目中遇到图片内存占用太大的问题。一种思路是将一张带有透明通道的图片拆分成两张,一张只包含RGB三个通道,另外一张只记录原图的A通道信息(可以用RGB任意通道),这样在Unity中经过压缩后的两幅图的大小也远比原来的带透明的图片小。于是自己实现了个cpp版的批量处理工具,话说好久不写cpp了写起来好难过啊。   这次用到的库是FreeImage。FreeImage是个轻量级的图像处理库,可以很方

2015-07-05 22:17:39 2010

原创 【猫猫的Unity Shader之旅】之双面材质和多Pass渲染

默认情况下,我们编写的Shader都只对模型的正面进行渲染,因为大多数模型都是封闭的,我们看不到反面。在实际的开发过程中,也经常会遇到需要正反面都渲染的时候,比如开发手游的时候经常需要用一个面片+透明的方式表示远处的植物和围墙,如果我们用默认的单面渲染,从另一面就无法看到,只能通过增加一倍面数来实现。通过Cull语句实现双面材质  实现双面渲染最简单的方法是用Cull Off。“Cull”意为“剔除

2015-06-01 13:35:13 13080 2

原创 【猫猫的Unity Shader之旅】之Blend语句

上回说过,片段经过fragment处理后,会经过混合处理,最终变为缓冲区中的颜色数据。这里的混合,指的是处理后的片段颜色与已经存在于缓冲区中的颜色进行混合。具体的混合规则使用Blend语句来指定。Blend {code for SrcFactor} {code for DstFactor}  这里的code for SrcFactor和DstFactor指的是下面表格的内容:    当使用Blend

2015-05-24 01:33:16 2125

原创 【猫猫的Unity Shader之旅】之可编程 Shader初步

可编程Shader,通常也被叫做Vertex&Fragment Shader,是比Surface Shader更灵活的一种Unity Shader形态。使用可编程Shader,可以实现对最终效果的更精确的控制,然而,代价就是需要关注更多的细节。一个最简单的可编程Shader  作为第一个例子,我们实现了一个简单的自发光效果,它甚至没有Surface Shader的第一个例子华丽,因为没有Lamber

2015-05-17 16:11:30 1252 1

原创 【猫猫的Unity Shader之旅】之使用顶点的世界坐标

在顶点运算阶段,我们可以得到每个顶点的位置,利用这些位置可以实现非常不错的效果访问顶点坐标   为了使用顶点坐标,我们需要使用顶点函数,将顶点坐标传入Input结果,再传入surf中进行处理。当然,要记得在Input中添加相应分量。void Myvert(inout appdata_full v, out Input IN){ UNITY_INITIALIZE_OUTPUT(Input,

2015-05-13 00:28:14 7715 3

原创 【猫猫的Unity Shader之旅】之混合效果

今天的好消息是,模型不再用立方体啦,也不是球和Plane,那些太土了,体现不出Shader的高大上有木有。囧了个囧,咳咳,我们是做学问,不要在意这些细节……  好吧,我们这次的主角是Unity娘,大家到Asset Store可以免费下载到这个萌妹子~  勤劳的Shader君  之前也有说过,我们的Shader最终任务是要计算颜色,但是为了最终的显示效果让老板满意,Shader君也算是煞费苦心啦。没办

2015-05-01 22:49:29 3029 1

原创 【猫猫的Unity Shader之旅】之玻璃材质

今天我们用学过的Shader知识实现一个简单的玻璃材质。首先,玻璃是半透明的  玻璃最主要的特点就是它是透明的,不同的玻璃有不同的不透明度,水杯的透明度比较低,而装药品的棕色玻璃瓶不透明度就比较高。当然,玻璃也有一定的颜色。利用透明,我们可以这样实现玻璃材质:Shader "Custom/GlassShader" { Properties { _MainTint("Main

2015-04-27 01:40:28 21817 2

原创 【猫猫的Unity Shader之旅】之初识屏幕特效

Shader除了可以处理模型的显示效果外,还有一个腻害的功能就是对要渲染的画面进行整体的处理,也就是屏幕特效。常见的比如《鬼泣4》里的动态模糊效果,景深效果,还有一些全局的颜色矫正,比如可以做出像《英雄联盟》中英雄死亡后的屏幕变灰的效果。Unity中实现屏幕特效需要用到一个脚本和一个Shader来完成。利用脚本搭建一个屏幕特效系统  要实现屏幕特效,首先需要面临的一个问题是特效作用于何处。既然说屏幕

2015-04-20 01:28:24 3271 2

原创 【猫猫的Unity Shader之旅】之扭曲模型

之前我们介绍的一些Shader效果都是在surf函数中做文章,也就是对渲染过程中的片段进行操作,实现的是模型表面的一些显示效果。然而,Unity Shader还提供对顶点阶段进行控制,来实现顶点的位置,颜色,法线等信息的修改。一个简单的例子  之前我们给过一个完整的Shader,用#pragma可以指定顶点函数。我们可以写一个简单的顶点函数,它什么也没有做:Shader "Custom/VertSh

2015-04-12 22:10:00 4229 2

原创 【猫猫的Unity Shader之旅】之透明材质

现实生活中有许多半透明的情形:玻璃、饮料瓶、塑料袋等等。半透明一个很重要的特点就是可以显示它后面的物体的部分颜色。这个“部分”具体是多少我们常用透明度来表示。一个简单的透明例子  想做出透明效果,第一步需要通知Shader我们要使用透明效果了。最简单的方法是在#pragma后面增加一个alpha参数,例如#pragma surface surf Lambert alpha。  开启透明后,只要对Su

2015-04-10 23:53:48 5886

原创 【猫猫的Unity Shader之旅】之反光材质

利用天空盒实现简单的反光效果  现实生活中有许多反射的例子,镜子、平静的水面、光滑的金属表面都有或多或少的反射效果,一种简单的模拟这种现象的做法是利用天空盒和Input结构中的worldRefl变量。  为了使用天空盒资源,我们可以导入官方的Skyboxes资源包,然后自己创建一个天空盒资源。一个天空盒资源需要六张贴图,分别表示盒子的六个面。    worldRefl表示世界空间中的反射向量,关于这

2015-04-08 23:53:39 6873 1

原创 【猫猫的Unity Shader之旅】之高光材质

之前我们的Shader用的光照模型都是Lambert,这种光照表示的是一种漫反射的情况。所谓的漫反射,表示的是光线照射在粗糙的表面的情况。由于表面粗糙,根据反射的规律,光线会被反射到各个方向。现实生活中有许多漫反射的情况,木头桌子,岩石,墙面,都是漫反射。  但是只有漫反射是不够的,现实中还有许多其他的情况。其中一种就是我们今天讨论的高光情况,高光其实表示的是一种接近于镜面反射的效果。对于镜面反射,

2015-04-07 00:23:34 5625 1

原创 【猫猫的Unity Shader之旅】之UV动画

UV动画是一种常用的渲染技巧,经常用来描述水的流动、霓虹灯的闪烁等。实现的原理就是动态修改贴图的UV坐标,使物体表面产生变化。贴图坐标  说到UV动画就不得不多说一点贴图了。我们知道,贴图是覆盖在模型表面用来描述模型表面细节的2D图片,那么贴图是怎么覆盖到模型上的呢?我们知道模型是由很多顶点组成的,这些顶点,三个一个组组成了若干三角形,正是这些三角形构成了模型的表面(三个点确定一个面嘛),这样的三个

2015-03-30 00:13:57 13931 3

原创 【猫猫的Unity Shader之旅】之法线贴图的运用

前几篇文章都在讲原理性的东西,不知道大家有没有烦。其实,当对Shader了解越来越多之后,就会越来越发现原理的重要性。建议大家学了一些Unity Shader的用法之后,多了解一点图形学知识,勿筑台于浮沙。为什么需要法线贴图  在实际的开发过程中,我们经常会遇到这样的矛盾:一方面希望模型的显示效果好,另一方面又希望模型具有较少的面数,节省开发成本和运行效率。例如我们现在要做一面砖墙,思路可能是这样的

2015-03-28 10:29:56 3403 5

原创 【猫猫的Unity Shader之旅】之简述3D图形学

上次我们说到一个完整的Shader的比较完整的框架,如果大家之前没有接触过3D相关的技术的话看起来可能会比较吃力,其实这也在猫猫的意料之中的。3D技术入门是比较困难的,但是入门之后就会越学越觉得容易。猫猫目前也还不算是真正的入门,只能算初窥门径吧,不过没有关系,猫猫决定简单讲一下Shader背后的东西,让我们一起努力吧。为什么会有3D效果  毫无疑问,我们能在屏幕上看到的图像都是2D的。不仅是屏幕,

2015-03-24 01:15:48 2257 4

原创 【猫猫的Unity Shader之旅】之一个完整的Shader示例

Unity Shader结构介绍  上回我们创建了一个用自己的材质和Shader的立方体,并且举例说了模型、材质、Shader三者的关系,想必大家已经很了解了。还不了解的同学请请戳这里。对于我们创建的Shader,虽然我们自己没有写代码,但是Unity为我们生成了一个简单的Shader:Shader "Custom/CubeShader" { Properties { _Ma

2015-03-18 01:34:03 3900 5

原创 【猫猫的Unity Shader之旅】之Unity Shader概述及学习环境搭建

【猫猫的Unity Shader之旅】之Unity Shader概述及学习环境搭建一、什么是Shader Shader君,中文名叫做着色器,本质上它是一段程序,专门用来处理3D图形的渲染过程。 这么说大家一定还是不太懂,还是让我们有请Shader君和它的伙伴们介绍一下自己吧: 模型君Model:”大家好,我是一个3D模型,来自3D Max、Maya、Blender等建模软件。

2015-03-15 16:58:43 2057 5

高斯模糊权重计算

利用高斯函数,C++编写的小工具,根据模糊半径和方差计算高斯模糊权重

2017-10-02

高斯模糊权重计算器

一个简单的计算高斯模糊权重的小工具,由C++编写,利用高斯公式计算。

2017-10-02

NGUI Next-Gen UI 3.9.2 (Aug 14, 2015).zip

NGUI Next-Gen UI 3.9.2 (Aug 14, 2015).zip

2015-09-06

NGUI Next-Gen UI 3.9.1 (Jul 24, 2015)

NGUI Next-Gen UI 3.9.1 (Jul 24, 2015)

2015-08-13

Unity大场景优化文档--Unity优化必备

Unity优化必备文档,介绍了很多优化必知必会的知识,新手学优化老手项目优化都必不可少。

2015-07-23

lua加密工具.zip

用于lua加密工具,便宜放送了,物有所值,比别家便宜。。。

2015-07-20

JSON .NET For Unity v1.3.5

JSON .NET For Unity v1.3.5

2015-06-25

【猫猫的Unity Shader之旅】之使用顶点的世界坐标

《【猫猫的Unity Shader之旅】之使用顶点的世界坐标》博文用到的工程

2015-05-12

【猫猫的Unity Shader之旅】之混合效果

【猫猫的Unity Shader之旅】之混合效果博文用到的工程

2015-05-01

【猫猫的Unity Shader之旅】之玻璃材质

【猫猫的Unity Shader之旅】之玻璃材质博客用到的工程

2015-04-26

【猫猫的Unity Shader之旅】之透明材质

【猫猫的Unity Shader之旅】之透明材质博文用到的工程。

2015-04-10

【猫猫的Unity Shader之旅】之UV动画

【猫猫的Unity Shader之旅】之UV动画博文中用的工程,方便大家学习

2015-03-29

【猫猫的Unity Shader之旅】之法线贴图的运用

《【猫猫的Unity Shader之旅】之法线贴图的运用》用到的工程,上传方便大家观看。

2015-03-28

毕设多媒体播放器

毕设拙作,满足常见的音乐播放器的大部分功能。

2013-08-03

基于MCI的mp3播放器(新手向)

自己做的基于mci的播放器,有播放控制,列表控制,播放进度显示,音量调剂等功能。

2012-11-03

自己做的打地鼠小游戏

用MFC制作的打地鼠小游戏,主要训练了定时器的使用。

2012-10-26

自己做了一个List类(复习数据结构中的单链表,新手向)

最近老是在带着复习数据结构(要找工作了数据结构真的很重要的说),运用自己对C++的了解,把单链表一些常用的功能封装成类,供数据结构的初学者观摩学习。因为是C++写的,要参考的同学请先熟悉C++语法。

2012-09-04

一个储蓄平台的C语言小项目

在学校做的一个C语言的综合小项目,模拟银行的储蓄系统。包括开户、销户(冻结)、解冻、删除、存款、取款、转账、查询等功能,比较基础。适合初学C语言的人看,VC6写的,在vs上可能会有问题。

2012-08-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除