图形学
文章平均质量分 93
puppet_master
coding can not change the world, but I will create my own world!
展开
-
《Gpu Gems》《Gpu Pro》《Gpu Zen》系列读书笔记
本篇blog简单记录了一下最近一两年一直在读的一系列书目。《Gpu Gems》1-3三部,《Gpu Pro》1-7七部,《Gpu Zen》一部。针对每一项渲染技术,进行全系列书的总结,从这个角度来看,可以看到一项技术,近十五六年来的进化过程。原创 2019-02-13 13:37:50 · 20066 阅读 · 9 评论 -
Unity Shader-非主流纹理采样研究(流光,溶解,隐身效果)
简介今天来研究几个效果,最近比较忙,所以来研究几个比较简单的效果。不过也是游戏中常用的一些效果,流光效果,按照方向的溶解效果。其实这几个效果主要运用的就是世界空间采样的一个技术。不多说,下面进入正题。流光效果首先来看一下流光效果。流光效果是一个非常常见的效果,不仅仅是游戏,一些广告之类的也都会有这种效果。流光的原理还是比较简单的:首先就是需要一张流光图,这张流光原创 2017-08-11 09:56:48 · 15546 阅读 · 10 评论 -
Unity Shader-遮挡处理(X-Ray,遮挡描边,遮挡半透,遮挡溶解)
游戏中处理遮挡的几种常用的方法,遮挡溶解,遮挡描边,遮挡半透,X光效果。原创 2017-07-26 01:38:18 · 43448 阅读 · 31 评论 -
Unity Shader-描边效果
简介描边效果是游戏里面非常常用的一种效果,一般在选中物体或者NPC的时候,被选中的对象就会显示描边效果。比如最近又跑回去玩了玩《剑灵》,虽然出了三年了,在现在的网游里面画面仍然算很好的。还有就是最常见的LOL中的塔,选中时就会看到很明显的描边效果:原创 2017-01-15 16:00:58 · 52228 阅读 · 28 评论 -
Unity Shader-死亡溶解效果
简介赶脚每个学习shader的,都得过死亡溶解这一关....毕竟这个效果灰常常用。今天,我也来研究一下死亡溶解效果的实现。溶解效果实现原创 2017-05-22 00:21:58 · 46983 阅读 · 38 评论 -
OpenGL管线(用经典管线代说着色器内部)
原文地址:http://www.cnblogs.com/liangliangh/p/4116164.html图形管线(graphics pipeline)向来以复杂为特点,这归结为图形任务的复杂性和挑战性。OpenGL作为图形硬件标准,是最通用的图形管线版本。本文用自顶向下的思路来简单总结OpenGL图形管线,即从最高层开始,然后逐步细化到管线图中的每个框,再进一步细化到OpenGL具体函转载 2017-05-17 19:18:59 · 1690 阅读 · 0 评论 -
Unity Shader-热空气扭曲效果
简介千等万等终于等到了《耻辱2》打折,本以为可以爽一发了,然而各种出问题,先是steam下载速度奇慢无比,下了三天晚上好不容易下完的游戏,第一次打开给弹了个3D11CreateDeviceAndSwapChain Failed,折腾半天装了个补丁算是能打开游戏了,然而过完新手教学显卡驱动就崩了,崩了!崩了,连崩三回,差点想把坑爹的A卡从机箱掏出来顺着窗户扔出去,后来发现贴吧里面也有好几原创 2017-05-03 23:19:36 · 36974 阅读 · 24 评论 -
Unity Shader-后处理:时空扭曲效果
简介最近刚刚通关《耻辱2》,在有一关的时候,竟然送给我了一个能够穿越时空的“神器”,有了这货,就可以一下子传送到过去或者回到现在。在使用这个道具的时候,会有一个屏幕扭曲的穿越的效果,感觉效果不错。屏幕扭曲效果,在之前的文章:热空气扭曲和屏幕水波纹效果也实现过类似的效果,可以进行参考。原创 2017-05-12 01:48:52 · 22726 阅读 · 10 评论 -
Unity Shader-法线贴图(Normal Map)与视差贴图(Parallax Map)
简介法线贴图技术至今一直是游戏增强画面效果的利器之一。随着移动设备的性能越来越好,曾经的在PC平台的各种高级技术在移动平台也都开始大规模使用了。最近印象最深刻的就是《镇魔曲》,场景地形全部都加了法线,可以说是无所不用其极了....之前还没见过哪个游戏在移动平台敢这么大规模地使用法线。而且人模的渲染也是走的次时代的流程。不得不说大厂就是牛,本屌丝只能望别人家的游戏兴叹啊。本篇文章主要是研原创 2017-03-15 01:19:40 · 14463 阅读 · 2 评论 -
Unity Shader-后处理:屏幕水波效果
一.简介最近在打黑魂,被虐得死去活来,每次都是想砸电脑的节奏,然而还是忍不住想玩,唉。在被虐了千百遍之后,我发现写代码比玩游戏爽....下面步入正题,黑魂的传送技能之前会播放一个帅帅的屏幕特效-屏幕水波,从屏幕中间向四周扩散开来,很有赶脚。下面附上一张截图:原创 2016-11-03 10:13:10 · 45658 阅读 · 62 评论 -
Unity Shader-后处理:径向模糊效果
简介游戏都追求画面感,个人感觉后处理是最能表现画面感的方法之一(虽然比较费)。之前玩了一阵子模糊效果,今天再来看一个模糊效果,径向模糊。这种效果对于画面感的提升非常有帮助,尤其是在快速运动突然加速的一瞬间,或者Boss出场狂吼一声的屏幕效果。于是我第一时间想到了《天涯明月刀》里面轻功飞起来加速的那一瞬间,径向模糊的使用,使轻功加速的画面感一下子就出来了。最近清了玩了快6年的原创 2017-02-24 23:21:05 · 20720 阅读 · 4 评论 -
CPU GPU设计工作原理(转载)
原文地址:http://www.cnblogs.com/geniusalex/archive/2008/12/26/1941766.html原文从这里开始:要说到设计的复杂程度,那还是CPU了!这个不用讨论,很简单的道理你看看显卡芯片的更新速度和CPU的更新速度就可见一斑了。还是简单说说他们的设计原理吧。CPU:但是,现在我要问一句:“什么是CPU?”我相信大多数人并不知道转载 2017-08-13 01:07:01 · 5353 阅读 · 0 评论 -
Unity Shader-Command Buffer的使用(景深与描边效果重置版)
Command Buffer是Unity5新增的一个灰常灰常强大的功能。先祭出官方介绍和文档。我们在渲染的时候,给OpenGL或者DX的就是一系列的指令,比如glDrawElement,glClear等等,这些东西目前是引擎去调用的,而Unity也为我们封装了更高一级的API,也就是CommandBuffer,可以让我们更加方便灵活地实现一些效果。CommandBuffer最主要的功能是可以预定义一些列的渲染指令,然后将这些指令在我们想要的时机进行执行。本篇文章简单介绍一下CommandBuffer的使用,原创 2017-06-07 01:25:22 · 41379 阅读 · 35 评论 -
Unity Shader-GodRay,体积光(BillBoard,Volume Shadow,Raidal Blur,Ray-Marching)
前言好久没有更新博客了,经历了不少事情,好在最近回归了一点正轨,决定继续Unity Shader的学习之路。作为回归的第一篇,来玩一个比较酷炫的效果,一般称之为GodRay,也有人叫它云隙光,当然,最高大上的名字就是体积光散射了。这几个名字对应几种类似的效果,但是实现方式相差甚远。先来几张照片以及其他游戏的截图看一下:ps:这张图片是一张照片哈,是本屌丝看别人的云南游记发现的,清明节本来想去的,结...原创 2018-05-12 02:17:22 · 32231 阅读 · 27 评论 -
Unity Shader-Decal贴花(SelfDecal,Alpha Blend,Mesh Decal,Projector,Deferred Decal)
本篇blog主要讨论了一下目前常见的一些贴花的实现方式,并全部在Unity中给出了基本的实现,包括自身二套uv贴花(Self Decal),叠片贴花(Alpha Blend面片贴花),内置投影器贴花(Projector),碰撞网格构造贴花(Mesh Decal),延迟贴花的多种实现方式(Depth Decal,Depth Normal Decal,Deferred Decal,同时影响多通道的贴花)等。原创 2019-01-06 19:19:45 · 25330 阅读 · 17 评论 -
Unity Shader-边缘检测效果(基于颜色,基于深度法线,边缘流光效果,转场效果)
边缘检测,在图像处理,计算机视觉中都是很重要的一个概念。在图像处理领域,由于输入只有一张图片,所以一般是将图片转成灰度,然后判断图片像素间的梯度来判断图像中的边界的;而在3D渲染领域,除了场景渲染结果图片外,我们还可以得到场景的深度以及法线等信息,让我们可以得到更加精确的边缘检测结果。边缘检测在渲染中虽然可能没有图像处理领域那样出名,但是也是可以用来实现一些特殊渲染风格,渲染效果,以及后处理AA等功能。原创 2018-11-17 13:21:53 · 12763 阅读 · 8 评论 -
《3D数学基础:图形与游戏开发》读书笔记
1.计算机图形学第一准则:近似原则如果她看上去是对的它就是对的。2.3D坐标系有两种,左手系和右手系,相同类型的坐标系可以通过旋转来重合,但左手系和右手系之间不可以。左右手坐标系转化可以通过翻转一个轴的符号来进行。DX左手系,OGL右手系,3dmax右手系,Unity左手系。3.惯性坐标系:为了简化世界坐标系到物体坐标系的转化,是世界坐标系和物体坐标系转化的中间过程。惯性坐标系原点与物...原创 2018-10-24 22:38:13 · 4186 阅读 · 0 评论 -
Unity Shader-Matcap(材质捕获)
Matcap,全称为Material Capture,翻译过来就是材质捕获。简单来说就是预先生成的一种存储了光照和反射等信息的贴图,运行时使用法线方向进行采样。Matcap的好处就是可以用很低的消耗来实现很多特殊风格的效果,但是Matcap也有一些缺陷,在于Matcap仅对于固定相机视角的情况较好,这也是Matcap的原理决定的。Matcap主要是在Zbrush,Mudbox这些软件里面使用的,ZBrush里面雕模的时候有时候虽然没有贴图,但是效果看起来也挺好的,实际上就是Matcap的作用,而且这些美原创 2018-11-05 23:45:02 · 7213 阅读 · 9 评论 -
Unity Shader-Ambient Occlusion环境光遮蔽(AO贴图,GPU AO贴图烘焙,SSAO,HBAO)
环境光遮蔽主要用来控制物体和物体相交,夹角,褶皱等位置遮挡漫反射光线的效果,提高暗部阴影效果达到一种近似自阴影的效果,提升画面的层次感,增加细节。本文主要实现几种主流的环境光遮蔽效果,AO贴图(使用预烘焙的贴图,实现离线的基于GPU的烘焙AO贴图的工具),SSAO(屏幕空间环境光遮蔽),HBAO(水平基准环境光遮蔽)原创 2018-10-30 00:44:45 · 41133 阅读 · 5 评论 -
UnityShader-BilateralFilter(双边滤波,磨皮滤镜)
双边滤波(Bilateral Filter),可能没有高斯滤波那样著名,但是如果说磨皮滤镜,那肯定是无人不知无人不晓了,用双边滤波就可以实现很好的皮肤滤镜效果,不管脸上有多少麻子,用完双边滤波,瞬间变身白富美。原创 2018-10-17 00:46:43 · 8314 阅读 · 4 评论 -
Unity Shader-反射效果(CubeMap,Reflection Probe,Planar Reflection,Screen Space Reflection)
简介反射效果,是一个渲染中很重要的一个效果。在表现光滑表面(金属,光滑地面),水面(湖面,地面积水)等材质的时候,加上反射,都可以画面效果有很大的提升。来看几张图:先来张最近比较火爆的国产大作《逆水寒》的镜湖,我木有钱钱进副本,只好从网上找了个截图,感觉很漂亮哈。《罗马之子》主角的金属盔甲反射&远处水面倒影反射。《耻辱-外魔之死》地面积水的反射,只反射了静态场景...原创 2018-09-11 23:42:43 · 54926 阅读 · 33 评论 -
图形学相关数学(反射,折射公式)
反射公式反射是经常用到的一个公式,之前在Phong光照的时候推导过一次,这次再整理一下。反射过程如图所示:首先需要保证光方向向量AB,法向量N均为单位向量,反射向量AC,光入射方向AD = -ABθ为入射角,由反射公式我们知道,AC与AB沿y轴对称,AD与AC沿x轴对称EB = N * |AB|cosθ = N * dot(N,AB)DC = 2 * EB = -2 * N...原创 2018-07-23 23:59:23 · 12603 阅读 · 1 评论 -
Unity Shader-深度相关知识总结与效果实现(LinearDepth,Reverse Z,世界坐标重建,软粒子,高度雾,运动模糊,扫描线效果)
前言前言废话依旧比较多,感觉我是个写游戏体验评测的,233。最近想起了《恶灵附身》这款游戏的几个效果:《恶灵附身》整款游戏都是在一个“疯子”撸总的脑洞世界里面,游戏内容相当恐怖(吓得我当年一边尖叫一边玩,不光把我吓够呛,把我室友也吓坏了),有“贞子”,“保险箱怪”等等至今让我久久不能忘怀的Boss,不过整个游戏既有恐怖的地方,又有刺激的战斗,非常符合三上真司一贯的作风(我是三上...原创 2018-06-18 20:08:58 · 28770 阅读 · 22 评论 -
SoftRenderer&RenderPipeline(从迷你光栅化软渲染器的实现看渲染流水线)
简介这是一篇没有什么实际作用的文章,因为没有任何shader效果实现,整篇文章到最后,我只实现了一个旋转的立方体(o(╯□╰)o),和Unity渲染的万紫千红的3D世界显得有很大落差,仿佛一切都回到了最初的起点。不过实时渲染繁华的背后,还是这看似简单的光栅化。今天,本人打算研究一下基本的光栅化渲染的实现,看一下怎样把一个模型从一些顶点数据,变成最终显示在屏幕上的图像,也就是所谓的渲染流水线。实现过...原创 2018-05-22 00:20:33 · 8937 阅读 · 15 评论 -
CG标准函数库
原文地址:http://blog.csdn.net/lcbcsdn/article/details/46848125(1)数学函数函数功能描述abs(x)返回输入参数的绝对值acos(x)反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值all(x)转载 2017-01-13 13:23:26 · 1534 阅读 · 0 评论 -
Unity Shader-法线贴图(Normal)及其原理
简介以前经常听说“模型不好看啊,怎么办啊?”答曰“加法线”,”做了个高模,准备烘一下法线贴图”,“有的美术特别屌,直接画法线贴图”.....法线贴图到底是个什么鬼,当年天真的我真的被这个图形学的奇淫杂技忽悠了,然而毕竟本人还算有点刨根问底的精神,决定研究一下法线贴图一家子。毕竟本人才疏学浅,如有错误,欢迎指正。先附上几个参考链接凹凸贴图(Bump Map)既原创 2016-12-20 23:53:44 · 52904 阅读 · 18 评论 -
BumpMap、NormalMap的区别
一种是Emboss Bump Map(浮雕凹凸贴图),它使用的是Height map,原理是在原始图像的基础上,对高度场图像进行复制、轻微平移、差操作。但它存在很多严重的局限性,它只能用于漫反射表面,对于镜面高光来说是不可能的。当光源直接照射在物体表面时,如果没有偏移,那么物体表面就不会出现任何凹凸现象。 DOT3 Bump Map(点乘凹凸贴图),它使用的是Normal Map,转载 2016-07-08 10:01:43 · 4878 阅读 · 0 评论 -
RGB与HSB之间的转换公式
原文地址:http://blog.csdn.net/xhhjin/article/details/7020449先来了解一些概念:1.RGB是一种加色模型,就是将不同比例的Red/Green/Blue混合在一起得到新颜色.通常RGB颜色模型表示为:2.HSB(HSV) 通过色相/饱和度/亮度三要素来表达颜色. H(Hue):表示颜色的类型(转载 2016-03-02 15:38:38 · 1710 阅读 · 0 评论 -
MipMap介绍&算法
原文地址:http://blog.sina.com.cn/s/blog_5f99aed00100d7pw.html Mipmap在3D图形学中主要是用来做anti-aliasing,这跟图像学中的概念是一致的:图像在缩小时因为采样率不够,就会导致混叠现象,如果是线,就表现为断线,如果是纹理比较复杂,就表现为纹理变得杂乱。在图形学中,我们经常会用到纹理贴图(注意:图形学中的纹理与图像学中转载 2015-12-05 16:57:37 · 6594 阅读 · 0 评论 -
DXT纹理压缩格式解析
我们知道游戏中对于3D物体表面细节的表现最重要的还是靠贴图来实现的,那么越是高分辨率越是真彩色的贴图自然表现力也是越强,但是同时带来的问题是所需占用的内存会成倍的上升,而节省内存这一点在目前的游戏中还是非常非常重要的。 所以各个平台上都在使用纹理压缩的技术,让纹理贴图在内存占用和显示效果能达到一个尽可能的平衡。在DirectX中,使用一种叫做DXT的纹理压缩技术,目前这种技术被大部分显卡所支持转载 2015-12-05 15:56:13 · 13845 阅读 · 0 评论 -
Nvidia显卡DDS格式类型的解释
This is a rough outline of the different options for saving DDS files using the Nvidia Photoshop DDS plugin. I wanted to know what each did, and couldn't find any online documentation for all of them,转载 2015-12-04 15:29:30 · 4342 阅读 · 0 评论 -
欧拉角与旋转
原文地址:http://blog.csdn.net/mysniper11/article/details/8766574欧拉角是一种常用的描述方位的方法。这项技术是著名数学家Leonhard Euler(1707~1783)的名字命名的,他证明了角位移序列等价于单个角位移。想详细了解的请点击维基百科:http://zh.wikipedia.org/wiki/%E6%AC%A7%转载 2015-11-20 21:09:39 · 3413 阅读 · 2 评论 -
3D数学 ---- 矩阵的几何解释
原文地址:http://www.cppblog.com/lovedday/archive/2008/01/09/40813.html一般来说,方阵能描述任意线性变换。线性变换保留了直线和平行线,但原点没有移动。线性变换保留直线的同时,其他的几何性质如长度、角度、面积和体积可能被变换改变了。从非技术意义上说,线性变换可能“拉伸”坐标系,但不会“弯曲”或“卷折”坐标系。转载 2015-11-21 18:20:17 · 1166 阅读 · 0 评论 -
Shader第十三讲 Alpha混合
原文地址:http://blog.sina.com.cn/s/blog_471132920101d8z5.htmlAlpha Blending,中文译作Alpha混合Blending就是控制透明的。处于光栅化的最后阶段。这里例如我们给一个模型贴一个材质,那么在某个点计算出来颜色值称为源,而该点之前累积的颜色值,叫目标。转载 2015-11-16 19:31:58 · 906 阅读 · 0 评论 -
OpenGL中的坐标系
原文地址:http://blog.csdn.net/ronintao/article/details/9157221一、前言 坐标系应该是任何图像系统的基石。在学习Cocos2D的过程中,对着《权威指南》上草草结束的坐标系介绍,实在是看的一头雾水,找了本OpenGL书把这块研究了一下,大致算是清楚了其中的一些基本概念。这里总结一下,作为记录。 二、数学基础转载 2015-11-20 15:21:19 · 1882 阅读 · 0 评论 -
计算几何与图形学有关的几种常用算法(二)
原文地址:http://blog.csdn.net/orbit/article/details/71018693.6 用矢量的叉积判断直线段是否有交 矢量叉积计算的另一个常用用途是直线段求交。求交算法是计算机图形学的核心算法,也是体现速度和稳定性的重要标志,高效并且稳定的求交算法是任何一个CAD软件都必需要重点关注的。求交包含两层概念,一个是转载 2015-11-04 13:40:21 · 3153 阅读 · 0 评论 -
齐次坐标问题
原文地址:http://www.cnblogs.com/kesalin/archive/2009/09/09/homogeneous.html问题: 两条平行线会相交 铁轨在无限远处相交于一点在欧几里得几何空间里,两条平行线永远都不会相交。但是在投影空间中,如右图中的两条铁轨在地平线处却是会相交的,因为在无限远处它们看起来相交于一点。在欧几里得(或称笛卡转载 2016-07-08 16:30:13 · 799 阅读 · 0 评论 -
HLSL内置函数表格
原文地址:http://www.cppblog.com/lai3d/archive/2008/10/23/64889.htmlIntrinsic Functions (DirectX HLSL)The following table lists the intrinsic functions available in HLSL. Each function has a转载 2016-08-30 21:08:52 · 2118 阅读 · 0 评论 -
使用Xcode GPU Frame Caputre教程
原文地址:http://blog.csdn.net/pizi0475/article/details/50715216http://blog.manbolo.com/2012/11/20/using-xcode-opengl-es-frame-capture 这里是原文,因为它版本比较老和它demo的限制,所以也想写一个基于Xcode6上基于3d渲染的分析的教程转载 2016-09-02 14:07:42 · 1606 阅读 · 0 评论 -
Unity Shader-渲染队列,ZTest,ZWrite,Early-Z
简介我们在写shader的时候经常会接触几个shader中的状态设置,今天来研究其中的三个状态的设置,Render Queue(渲染队列),ZTest(深度测试),ZWrite(写入深度)。这三个状态之间基情满满,当我们需要一些遮挡效果时,就需要同时使用这几个状态来控制。在渲染阶段,引擎所做的工作是把所有场景中的对象按照一定的策略(顺序)进行渲染。怎么渲染能保证物体之间的遮挡关系是原创 2017-01-02 01:16:02 · 29107 阅读 · 24 评论