unity3d shader实战练习
文章平均质量分 94
对unity shader着色的特效,算法等的研究学习
wolf96
Welcome, I'm Lin Dong. I am an U3D Programmer in ShangHai, I love Game Developing and Rendering, I will be absorbed in it.here is my GitHub URL https://github.com/wolf96
email URL wolf_crixus@sina.cn
展开
-
WangTile实现小结
过程square tiles with just two types of edge, the complete stochastic set consists of 16 tiles,While the number of tiles required to form a complete stochastic set increases dramatically as you add new...原创 2020-04-25 14:52:09 · 1635 阅读 · 1 评论 -
关于EarlyZ
在前向渲染中,ZTest是在Fragement Shader之后进行的,也就是说,被遮挡的部分也要绘制FS,就产生了Over Draw,其实很费,Early Z Culling就解决了这个问题Early fragment tests, as an optimization, exist to prevent unnecessary executions of the Fragment Shad...原创 2018-12-14 12:35:02 · 2860 阅读 · 0 评论 -
延迟渲染与前向渲染
The basic idea behind deferred shading is to perform all visibility testing before performing any lighting computations.-RealTimeRendering 3rd延迟着色的基本思想是在执行任何光照计算之前执行所有可见性测试。General goal of the a...原创 2018-12-11 17:58:06 · 6015 阅读 · 0 评论 -
Lighting Box2源码分析系列
Lighting Box2源码分析(一):整体功能 Lighting Box2源码分析(二):Sun Shafts Lighting Box2源码分析(三):Depth Of Field景深 Lighting Box2源码分析(四):Global Fog全局雾原创 2018-10-24 19:30:36 · 1370 阅读 · 0 评论 -
Stochastic Screen Space Reflections(三):实现与优化
必须在延迟管线下渲染,且在不透明后,半透明前渲染本文在Xerxes1138的基础上进行改进实现Xerxes1138的实现比Siggraph2015的步骤省略了不少内容少了Tile分类和Hi-Z Trace首先逐个pass来看他的实现过程Recursive Pass//uv-速度(回到上一帧uv) float2 prevUV = uv - velocity; /...原创 2018-10-12 20:53:53 · 2425 阅读 · 0 评论 -
Stochastic Screen Space Reflections(二):SSR
Stochastic SSR是在SSR基础上的改进,下面看一下SSR流程整体流程:分块分类->Raymarching->卷积->处理反射(得到结果)->处理artifacts(解决噪声)->异步处理(优化)计算反射hit位置将屏幕分成16×16块tile此处的采样分布引用了刺客信条黑骑的方法黑旗算了一张Mask作为反射计算精度的...原创 2018-10-12 20:43:22 · 1932 阅读 · 0 评论 -
Stochastic Screen Space Reflections(一):理论
翻译了一篇PPT,源代码可以参考github这也是Lighting Box中StochasticSSR中的实现方法-----by wolf96 https://blog.csdn.net/wolf96...原创 2018-10-12 09:18:03 · 1504 阅读 · 0 评论 -
Unity PostProcessing Stack v2源码分析系列
Unity PostProcessing Stack v2源码分析(九):Color Grading Unity PostProcessing Stack v2源码分析(八):颗粒效果 Unity PostProcessing Stack v2源码分析(七):Auto Exposure自动曝光 Unity PostProcessing Stack v2源码分析(六):Lens Distort...原创 2018-09-21 09:00:55 · 1913 阅读 · 2 评论 -
Unity PostProcessing Stack v2源码整体结构梳理
整体渲染逻辑在PostProcessLayer.cs中把几个后期渲染顺序暴露给开发者,后期渲染顺序:不透明物体之后->栈前->栈中->栈后->最后的pass(最后的pass跳过输出HDR)不透明物体之后在RenderOpaqueOnly()方法中进行其余的顺序都在Render()方法中进行栈中方法为RenderBuiltins()最后的Pass方法为Re...原创 2018-09-18 09:42:19 · 5937 阅读 · 3 评论 -
一种基于高度的材质混合方式-地表篇
发现守望先锋的地表很特别,不像是在unity那里画的那种材质间线性过渡,找了一下资料,感觉像是根据高度在shader中计算的这是一种简单的近似方法高度混合的原理:简单的线性混合是这样的,就是mix/lerp一下,但是这样很丑,不自然 得到高度图只取最大高度的材质就是这种结果,像是泥土平铺在石头上 还有一种是最需要的,材质间的过渡原创 2016-12-21 20:28:45 · 7104 阅读 · 1 评论 -
Unity3d Physically Based Hair Shading in Unreal
---by wolf96原创 2016-10-17 07:23:19 · 1980 阅读 · 2 评论 -
Unity3d Realtime Dynamic Volume Clouds Rendering
Ray Marching体积渲染+perlin noise动态效果:博主近期渲染:2016的渲染2015后半段的渲染 ---- by wolf96 http://blog.csdn.net/wolf96原创 2016-05-14 17:53:59 · 7176 阅读 · 2 评论 -
Unity3d Ray Marching
博主近期渲染:2016的渲染2015后半段的渲染 ---- by wolf96 http://blog.csdn.net/wolf96原创 2016-05-14 10:17:43 · 2236 阅读 · 1 评论 -
Unity3d Realtime Dynamic Clouds Rendering
双层云,Voronoi noise & Worley noise博主近期渲染:2016的渲染2015后半段的渲染 ---- by wolf96 http://blog.csdn.net/wolf96原创 2016-05-11 07:01:15 · 1821 阅读 · 0 评论 -
Unity3d 实现顶点动画
在今年GDC上发现一个非常有趣的演讲,叫做Animating With Math,遂实现之,是讲述顶点shader动画的,举了几个经典的例子,但是讲者并没有给代码,而是像虚幻引擎那样的节点,这样更加清楚明了之前博主通过顶点着色器实现了谁的波动算法:顶点着色器动画可以减少动画的开销,并减少关节joint的数量开始举的例子都很简单,可以着手一试 关于vertex c原创 2016-04-20 07:23:11 · 9595 阅读 · 0 评论 -
Unity3d 模拟视锥的实现
一个独立游戏 Teleglitch 使用了一种欺骗手法来模拟视锥,效果如下:博主看了看了看提示Actually, the line of sight shadows aren’t done with perspective. They are just black polygons extruded from the walls away from the player.原创 2016-04-16 11:52:43 · 5740 阅读 · 1 评论 -
进阶光照与材质之光照和反射模型
第五章讲述了一些漫反射模型和镜面反射模型的原理和数学公式博主在unity中实现了一下,把部分结果贴在上面有下面几个主题:渲染公式基本光照定义光照和lambert法则双向反射分布函数BRDF漫反射材质原理简介与模型镜面反射材质原理简介与模型基本光照定义对于我们眼睛可见的光对于表面的作用,他们会发生,反射,穿透,折射,吸收,或者表面自发光。原创 2016-04-11 06:53:55 · 8601 阅读 · 2 评论 -
进阶光照与材质之物体和材质
第四章主要介绍分析真实世界中某些常见材质的特性与细节,作者提醒我们应该时刻关注大自然真实世界中材质的特点,加强自己的思考与敏锐的观察力和感知力对渲染实现很有帮助。作者主要对如下材质进行了分析:塑料木头:树,木材,被油漆过的木材叶子和植物金属混凝土和石头:混凝土,砖石,自然界的石头皮肤头发和毛发大气半透明材质:玻璃,水油漆旧的磨损的材质原创 2016-04-09 11:44:46 · 4495 阅读 · 0 评论 -
进阶光照与材质之模拟真实世界的光照
读书笔记第二章,加了许多博主的理解和补充。第二章讲的也是基础知识,补充了博主许多知识缝隙。介绍了四中类型光的光照模型,点光源,面光源,方向光,聚光灯,和他们的光照模型,还简单介绍了下GI。这章的几个topics:1.理想的点光源2.几何衰减3.光照通过物质的衰减4.方向光5.面积光6.聚光灯7.本地和全局光照模型8.环境光作者首先介绍了真实世界中一些原创 2016-04-06 17:07:03 · 3524 阅读 · 0 评论 -
进阶光照与材质之光的物理学
对advanced lighting and materials with shaders的读书笔记与总结,05年的老书了,这本书简单并且通俗易懂这一章是讲述光照理论知识的,虽然大部分的理论都知道,但是复习一遍总是好的正如作者所说,你在知道“how”之前需要知道“why”光的二元性之所以二元性,是因为我们的大前辈科学家们发现的光的性质各不相同,而现在又发现,其实这两者性原创 2016-04-06 07:59:47 · 1680 阅读 · 0 评论 -
Unity3d BTDF实时折射模拟有粗糙度的半透明物体
折射的原理是运用BTDF的一个球形高斯近似需要考虑折射光的来源,一般会想到用环境贴图(IBL)或者grab texture,但是折射光不全都来自一个平面,所以选择环境贴图来作为折射光。这个效果主要是BTDF计算折射光,和BRDF计算物体的反射光,二者加和即是最终结果。我们需要用到的参数 我们的最终实现公式为: fr是BRDF,ft是BTDF。Fr原创 2016-03-29 08:00:57 · 3932 阅读 · 1 评论 -
Unity3d PBR海水渲染
三层水博主近期渲染:最近用unity5弄的一些渲染 ---- by wolf96 http://blog.csdn.net/wolf96原创 2016-01-03 13:09:12 · 7612 阅读 · 2 评论 -
Unity3d Fast Indirect illumination Using Two Virtual Spherical Gaussian Lights-Square Enix论文 ver 2
改进之后未使用VSGL使用VSGL博主显卡差的一笔,nvidia GeForce 610M,。。。下狠手编shader不是卡死就是显原创 2015-12-31 14:35:59 · 1670 阅读 · 0 评论 -
Unity3d Fast Indirect illumination Using Two Virtual Spherical Gaussian Lights-Square Enix论文
博主实现(in Unity3d 5)used one spotlight史克威尔效果展示(夜光引擎?)博主近期渲染:最近用unity5弄的一些渲染 ---- by wolf96 http://blog.csdn.net/wolf96原创 2015-12-30 07:00:33 · 2213 阅读 · 1 评论 -
Unity3d shader之SWAP Force Depth-of-Field Shader
这个景深的方法很简单 我们需要求的是CoC(circle of confusion)模糊圈CoC与R相关 主要原理如下图所示alpha是透镜的半径 zf为焦点,z为物距 要求R知道一些高中的三角公式就可以了 再根据CoC决定模糊原创 2015-12-21 07:43:31 · 2467 阅读 · 0 评论 -
Screen-Space Bent Cones (SSBC) in Unity5
噪音少、高度保留了纹理细节博主近期渲染:最近用unity5弄的一些渲染 ---- by wolf96 http://blog.csdn.net/wolf96原创 2015-11-25 15:41:47 · 2157 阅读 · 1 评论 -
screen space directional occlusion(SSDO) in Unity5
也许是哪里出了问题。。效果一般16采样点Gird、Random博主近期渲染:最近用unity5弄的一些渲染 ---- by wolf96 http://blog.csdn.net/wolf96原创 2015-11-23 19:12:13 · 2944 阅读 · 4 评论 -
Atmospheric Scattering in Unity5
本次实践效果仅有Atmospheric Scattering和AA,并无其他post-processing,看到类似depth of field等的效果全部是Atmospheric Scattering的效果!!总共改进三次,一次比一次效果真实,下面上三个版本的效果图ver0ver1no Rayleigh scattering&Mie scatter原创 2015-11-21 07:44:47 · 1540 阅读 · 0 评论 -
Unity3d 屏幕空间人体皮肤知觉渲染&次表面散射Screen-Space Perceptual Rendering & Subsurface Scattering of Human Skin
想要人皮肤更加真实,人皮肤上的细节成了一个关键问题,包括褶皱、毛孔、毛囊,甚至是伤疤,这既可以造成我们的障碍,也可以帮助我们使皮肤看起来更真实。如果只是用普通的Lambert,甚至是PBR得到的效果也是不真实的,非常生硬、干燥,塑料质感。如下图所示,下图(No SSSSS)是博主用unity5 的standard PBR shader来渲染的。我们缺的就是次表面散射,之前的文也说过了,皮肤其实是有些轻微的半透明的,大多数的漫反射光来自次表面散射 ,光线接触到皮肤时,有大约96%被皮肤各层散射了,只有大约4%原创 2015-11-06 07:49:45 · 16220 阅读 · 8 评论 -
TSSAO Temporal Screen-Space Ambient Occlusion (Unity3d 5 示例实现)
前提环境光(ambient occlusion)是一种GI,其简化形式SSAO可以用“微量高效”来形容,消耗得很少,得到的效果很好。环境光遮蔽(ambient occlusion)的本质是计算在一个点的半球面范围内有多少方向被阻塞(如下图1.2.1),然后根据它调整表面颜色。如果实时渲染使用的话非常消耗,所以在游戏中一般都使用(screen-space ambient occlusion)原创 2015-10-09 10:56:03 · 4150 阅读 · 1 评论 -
Unity5 的新旧延迟渲染Deferred Lighting Rendering Path
unity5 的render path ,比4的区别就是使用的新的deferred rendering,之前的4的deferred rendering(其实是light prepass)也被保留了下来。Legacy Deferred Lighting Rendering Path(light prepass)老旧的Deferred Rendering Path,使用了light pre原创 2015-09-25 09:46:42 · 6950 阅读 · 0 评论 -
最近用unity5弄的一些渲染
9月末。。。要找工作了,,压力山大。。。顺便求职(实习,明年五月左右)。。邮箱:wolf_crixus@sina.cn ------------by wolf96 http://blog.csdn.net/wolf96原创 2015-09-23 12:52:30 · 11595 阅读 · 1 评论 -
窥探Unity5渲染内部之解析UnityShaderVariables.cginc
unity5的UnityShaderVariables.cginc比unity4大了1kb这里装着unity shader 大部分内部参数,写这个方便以后自己查询Camera参数 uniform float4 _Time;时间,x = t/20,y = t,z = t*2,w = t*3uniform float4 _SinTime; sin(原创 2015-09-22 06:55:24 · 5843 阅读 · 1 评论 -
一个简单的GI--Reflective Shadow Maps
Reflective Shadow Maps是一种简单的GI,虽然名字带有Shadow Maps,但是和Shadow Maps没有什么关系,是在screen space的一种方法,不像光线追踪和辐射度方法一样又消耗,又费时,适合于动态的场景,我们主要需要的变量基本都来自G-buffer,如下图 从左到右依次为depth, world space coordinates, normal,原创 2015-09-17 21:30:17 · 2763 阅读 · 0 评论 -
unity3d 制造自己的水体water effect(二)
前篇:unity3d 制造自己的水体water effect(一)曲面细分:Unity3d 使用DX11的曲面细分PBR:讲求基本算法Unity3d 基于物理渲染Physically-Based Rendering之specular BRDFplus篇Unity3d 基于物理渲染Physically-Based Rendering之实现最终篇Unity3d原创 2015-09-14 07:52:58 · 10366 阅读 · 3 评论 -
Unity5内部渲染的优化3:移除固定功能
译自aras的博客,总共3篇文章,讲述unity5优化自己渲染器的过程吸取大神调试与优化经验,了解unity5内部渲染器的优化方法第一篇:Unity5内部渲染的优化1:介绍第二篇:Unity5内部渲染的优化2:清理上篇文章写了关于清理和优化。从那时起,我已经转变到做一些unity5.1的工作了,移除了固定功能着色器Fixed Function翻译 2015-09-11 07:02:15 · 2636 阅读 · 1 评论 -
Unity5内部渲染的优化2:清理
译自aras的博客,总共3篇文章,讲述unity5优化自己渲染器的过程吸取大神调试与优化经验,了解unity5内部渲染器的优化方法前篇:Unity5内部渲染的优化1:介绍介绍过去后,让我们来进行实际工作 在以前的文章已经提到的,首先我尝试想起/找出现有代码,做一些分析并且写下突出的地方。 分析多个项目主要揭示了两件事:1. 渲染代码使用多线程翻译 2015-09-05 07:18:54 · 6371 阅读 · 0 评论 -
Unity5内部渲染的优化1:介绍
译自aras的博客,总共3篇文章,讲述unity5优化自己渲染器的过程吸取大神调试与优化经验在工作中我们形成一个小组“strike team”来优化unity渲染的cpu部分。基本信息/父本的警告在很多情况下,我要严厉的说“这段代码很烂!“。当要努力改善代码的时候,你当然想提高不好的地方,这是重点。一般来说并不意味着代码库是坏的,或者它不能用于做出好东西。就在今年3月,翻译 2015-09-02 12:17:37 · 3283 阅读 · 1 评论 -
新图形API为unity5 带来了什么&下一代新图形API的好处
西瓜的演讲ppt翻译+解释+其他: wolf96 在最基本的层面上,这些新api是为了改进CPU性能和效率,通过:减少CPU渲染瓶颈的情况,提供更多可预测和稳定的驱动的行为,给应用程序更多控制,就像在控制台开发一样 在传统的api,通常只有单个CPU线程提交GPU的工作。当试图渲染一个极其复杂的场景时,可能成为一个瓶颈。因此,大多数应用程序尝试在“渲染线程”做尽原创 2015-08-31 09:46:51 · 2915 阅读 · 3 评论 -
unity3d 随机生成地形之随机山脉
利用Fractal Noise生成地形,再加上山体shader,外加雪shaderNoise生成结果noise 生成主要参考这篇文章,就不再赘述Value3D:Perlin2D:Fractal Noise:地形生成结果生成地形网格方法主要参考这篇文章,就不再赘述noise 频率:22,分辨率:256Value3D:原创 2015-08-07 07:31:56 · 9477 阅读 · 1 评论