Shader食谱 Chapter3--Toonshader卡通效果 unity shader toon 卡通Shader  Shader食谱 Chapter3--Toonshader卡通效果 OverView toon shader是游戏中比较常用的效果之一,尤其在二次元游戏中为了模拟角色在动画中手绘的效果.它是一种非真实的渲染技术,可以让3D角色显得平软很多.Toon效果实现过程主要是将大片光照接近的区域归到接近的步长,比如光照00.2全都为0,0.20.4全都视为0.2...这里主要通过两种…
pixijs shader贴图扫光效果 直接贴代码 const app = new PIXI.Application({ transparent: true }); document.body.appendChild(app.view); // Create background image const background = PIXI.Sprite.from('/moban/bg_grass.jpg'); background.width = app.screen.width; backgr…
运动模糊,代码如下: using UnityEngine; public class MotionBlurRenderer : PostEffectRenderer { [Range(0.1f, 0.9f)] [SerializeField] float m_blurAmount = 0.1f; RenderTexture m_accumulationTexture; void OnDisable() { DestroyImmediate(m_accumulationTexture); } pr…
Bloom特效是游戏中常见的一种屏幕效果.这种特效可以模拟真实摄像机的一种图像效果,它让画面中较亮的区域“扩散”到周围的区域中,造成一种朦胧的效果. Bloom的实现原理很简单,首先根据一个阈值提取出图像中较亮的区域,把它们存储在一张渲染纹理中,再利用高斯模糊对这张渲染纹理进行模糊处理,模拟光线扩散的效果,最后再将其和原图像进行混合,得到最终的效果. 转载请注明出处:http://www.cnblogs.com/jietian331/p/7243444.html 如实现代码如下: using U…
高斯模糊,见 百度百科. 也使用卷积来实现,每个卷积元素的公式为: 其中б是标准方差,一般取值为1. x和y分别对应当前位置到卷积中心的整数距离. 由于需要对高斯核中的权重进行归一化,即使所有权重相加为1,因此e前面的系数实际不会对结果产生任何影响. 转载请注明出处:http://www.cnblogs.com/jietian331/p/7238032.html 综上,公式简化为: G(x,y) = e-(x*x+y*y)/2 因此,高斯核计算代码如下: using System; namesp…
均值模糊,也使用卷积来实现,之不过卷积中每个值均相等,且相加等于1. 代码如下, 子类: using UnityEngine; public class MeanBlurRenderer : PostEffectRenderer { protected override string ShaderName { get { return "Custom/Mean Blur"; } } } MeanBlurRenderer shader Shader "Custom/Mean B…
边缘检测的原理是利用一些边缘检测算子对图像进行卷积操作. 转载请注明出处:http://www.cnblogs.com/jietian331/p/7232707.html 例如: 代码如下: using UnityEngine; public class EdgeDetectRenderer : PostEffectRenderer { [SerializeField] Color m_edgeColor; protected override void OnRenderImage(Render…
Unity的屏幕后期处理效果,使用MonoBehaviour.OnRenderImage来实现. 转载请注明出处:http://www.cnblogs.com/jietian331/p/7228063.html 如代码如下: 基类: using UnityEngine; [RequireComponent(typeof(Camera))] public abstract class PostEffectRenderer : GameBehaviour { protected abstract s…
如果你还不知道如何在three.js中添加后期渲染通道,请先看一下官方的一个最简单的demo : github. 正如demo中所示的那样,我们的扫光效果,也是一个自定义的ShaderPass. 所以,我们得写一个shader来实现想要的效果,这里介绍一下实现的思路. 1.在自定义通道上,先获取场景原本的uv,然后原样输出: 2.在fs里,降低gl_FragColor的亮度(乘以小于1.0的数,这里取0.3),这样,画面立马暗了下来: 3.画一条直线 y = -x:在这条直线上的部分颜色亮度为1…
这里使用一种更高效地从深度纹理中重建世界坐标的方法. 首先计算摄像机的视锥体的四条射线向量进行线性插值,插值后的值便是该像素在世界空间坐标下到摄像机的方向. 然后通过与深度值相乘即可得到摄像机位置到该像素的向量,加上摄像机的位置则是该像素在世界空间中的位置. 转载请注明出处:https://www.cnblogs.com/jietian331/p/9443343.html c#代码: using UnityEngine; public class HighFog2 : PostEffectRen…