减少draw call数目——动态批处理

作者:追风剑情 发布于:2017-10-7 19:52 分类:Shader

      如果场景中有一些模型共享了同一个材质并满足一些条件,Unity就可以自动把它们进行批处理,从而只需要花费一个draw call就可以渲染所有模型。动态批处理的基本原理是,每一帧把可以进行批处理的模型网格进行合并,再把合并后的模型数据传递给GPU,然后使用同一个材质对其渲染。除了实现方便,动态批处理的另一个好处是,经过批处理的物体仍然可以移动,这是由于在处理...

阅读全文>>

标签: Shader

评论(0) 浏览(3877)

利用NDC坐标实现画面渐隐效果

作者:追风剑情 发布于:2017-9-15 18:47 分类:Shader

NDC坐标:把裁剪空间中的坐标归一化后得到的坐标。取值范围[-1,1] 示例:让屏幕画面渐隐 工程如图 FadeOut.shader代码 Shader "Custom/FadeOut" { Properties { //材质面板中隐藏_MainTex [PerRendererData] _MainTex ...

阅读全文>>

标签: Shader

评论(0) 浏览(9183)

空间坐标转换过程

作者:追风剑情 发布于:2017-8-28 11:26 分类:Shader

参考 http://blog.csdn.net/cubesky/article/details/38664143 对象空间(Object Space) 世界空间(World Space or Model Space) 摄像机空间(Camera Space or Eye Space or View Space) 屏幕空间(Screen Space or Clip Spac...

阅读全文>>

标签: Shader

评论(0) 浏览(3992)

什么是HDR

作者:追风剑情 发布于:2017-8-13 12:27 分类:Shader

      在使用基于物理的渲染时,我们经常会听到一个名词就是HDR。HDR是High Dynamic Range的缩写,即高动态范围,与之相对的是低动态范围(Low Dynamic Range, LDR)。那么这个动态范围是指什么呢?通俗来讲,动态范围指的就是最高的和最低的亮度值之间的比值。在真实世界中,一个场景中最亮和最暗区域的范围可以非常大,例如,太阳发出的光可...

阅读全文>>

标签: Shader

评论(0) 浏览(4755)

逐片元操作阶段流程图

作者:追风剑情 发布于:2017-8-6 15:40 分类:Shader

逐片元操作(Per-Fragment Operations)流程图 只有通过了所有的测试后,新生成的片元才能和颜色缓冲区中已经存在的像素颜色进行混合,最后再写入颜色缓冲区中。 模板测试(Stencil Test)流程图 与之相关的是模板缓冲(Stencil Buffer)。实际上,模板缓冲和我们经常听到的颜色缓冲...

阅读全文>>

标签: Shader

评论(0) 浏览(3350)

Camera.main.SetReplacementShader()

作者:追风剑情 发布于:2017-8-5 16:39 分类:Shader

替换前 替换后 示例: Unity5.5 using System.Collections.Generic; using UnityEngine; public class TestShader : MonoBehaviour { void Start () { //SetReplacem...

阅读全文>>

标签: Shader

评论(0) 浏览(4281)

利用模板测试实现遮罩效果

作者:追风剑情 发布于:2017-8-4 17:15 分类:Shader

模板测试 参考 http://blog.csdn.net/u011047171/article/details/46928463 官方文档 https://docs.unity3d.com/Manual/SL-Stencil.html 示例: Unity5.5 一、创建Cube和Quad,如图 二、...

阅读全文>>

标签: Shader

评论(0) 浏览(4771)

Tags

作者:追风剑情 发布于:2017-8-3 11:48 分类:Shader

参考 http://www.jianshu.com/p/7b9498e58659 SubShader中的Tags SubShader {    Tags {"Queue"="Geometry" "RenderType"="Opaque" "ForceNoShadowCasting"="true" "IgnoreProjector"="true"} } ...

阅读全文>>

标签: Shader

评论(0) 浏览(3557)

顶点光照着色器——VertexLit

作者:追风剑情 发布于:2017-8-2 10:38 分类:Shader

//顶点光照着色器 Shader "Custom/VertexLit" { Properties { _Color ("Main Color", Color) = (1,1,1,0) _SpecColor ("Spec Color", Color) = (1,1,1,1) _Emission ("Emmisive Color", Colo...

阅读全文>>

标签: Shader

评论(0) 浏览(3192)

标准着色器(Standard Shader)

作者:追风剑情 发布于:2017-7-15 19:42 分类:Shader

位于DefaultResourcesExtra/Standard.shader Unity5的基础着色器——标准着色器为基于物理的着色提供了多种可详细设置的选项   Standard Sharder默认使用的是#pragma target 3.0 DX9着色器模型3.0:衍生指令,纹理LOD采样,10个插值器,允许更多数学/纹...

阅读全文>>

标签: Shader

评论(0) 浏览(5624)

着色器数据类型与精度

作者:追风剑情 发布于:2017-5-27 15:29 分类:Shader

高精准度float 32位 高精度通常用于世界空间位置,纹理坐标或涉及复数函数(如三角法或幂/取幂)的标量计算。 中等精度half 16位 范围为-60000至+60000,精度约为3位十进制数 半精度对于短矢量,方向,对象空间位置,高动态范围颜色是有用的。 低精度fixed 11位 范围为-2.0至+2.0和1/256精度 固定精度对常规颜色(通常存储在常规纹理中)和...

阅读全文>>

标签: Shader

评论(0) 浏览(4107)

让Sprite支持描边

作者:追风剑情 发布于:2017-5-25 20:05 分类:Shader

参考:http://blog.csdn.net/bulademian/article/details/57082556 一、修改Sprites-Default.shader Shader "Custom/Sprite-Outline" { Properties { [PerRendererData] _MainTex ("Sprite Texture...

阅读全文>>

标签: Shader

评论(0) 浏览(11232)

水波效果

作者:追风剑情 发布于:2017-5-22 20:57 分类:Shader

一、创建SinWater.shader Shader "Custom/SinWater" { Properties { _MainTex ("Texture", 2D) = "white" {} //控制波动周期长度 _DistanceFactor ("Distance Factor", float) = 1.0 //控制波动速率(值越大越快) _...

阅读全文>>

标签: Shader

评论(0) 浏览(4566)

屏幕坐标——挖空效果

作者:追风剑情 发布于:2017-5-13 14:55 分类:Shader

一、创建ScreenCutout.shader Shader "Custom/Screen Cutout" { Properties { _MainTex ("Texture", 2D) = "white" {} _ClipX0 ("Clip x0", float) = 0 _ClipY0 ("Clip y0", float) = 0 _ClipX1...

阅读全文>>

标签: Shader

评论(0) 浏览(3646)

运动模糊(一)

作者:追风剑情 发布于:2017-5-9 11:47 分类:Shader

一、创建Shader Shader "Custom/MotionBlur" { Properties { _MainTex ("Texture", 2D) = "white" {} //混合图像时使用的混合系数 _BlurAmount ("Blur Amount", Float) = 1.0 } SubShader { Tags { "Ren...

阅读全文>>

标签: Shader

评论(0) 浏览(4103)

顶点动画——流动的河流

作者:追风剑情 发布于:2017-4-6 8:45 分类:Shader

开发环境Unity5.4 Shader "Custom/Chapter11-Water" { Properties { //河流纹理 _MainTex ("Main Tex", 2D) = "white" {} //控制整体颜色 _Color ("Color Tint", Color) = (1, 1, 1, 1) //控制水流波动的幅度 _Mag...

阅读全文>>

标签: Shader

评论(0) 浏览(17671)

光的衰减

作者:追风剑情 发布于:2017-1-16 18:51 分类:Shader

光随距离衰减。所以,远离光源的物体会变暗一些。现实世界里,光强度反比于物体和光源距离的平方。 此处i为光强,d为距离。 实践中,上面公式并不方便,我们常用另一个简单的基于辐射衰减距离的模型替代,在辐射衰减距离之外,光线将完全衰减为0。通常,可在光线有效射程内使用线性插值表现光随距离d的衰减: 如上,实际有两个辐射衰减距离。在dmin内...

阅读全文>>

标签: Shader

评论(0) 浏览(11263)

屏幕空间

作者:追风剑情 发布于:2017-1-3 20:56 分类:Shader

      经过投影矩阵的变换后,我们可以进行裁剪操作。当完成了所有的裁剪工作后,就需要进行真正的投影了,也就是说,我们需要把视锥体投影到屏幕空间(screen space)中。经过这一步变换,我们会得到真正的像素位置,而不是虚拟的三维坐标。       屏幕空间是一个二维空间,因此,我们必须把顶点从裁剪空间投影到屏...

阅读全文>>

标签: Shader

评论(0) 浏览(7976)

裁剪空间

作者:追风剑情 发布于:2016-12-26 22:20 分类:Shader

     顶点接下来要从观察空间转换到裁剪空间(clip space,也被称为齐次裁剪空间)中,这个用于转换的矩阵叫做裁剪矩阵(clip matrix),也被称为投影矩阵(projection matrix)。      裁剪空间的目标是能够方便地对渲染图元进行裁剪:完全位于这块空间内部的图元将会被保留,完全位于这块空间外部的...

阅读全文>>

标签: Shader

评论(0) 浏览(19176)

Bloom效果

作者:追风剑情 发布于:2016-12-24 20:36 分类:Shader

      Bloom特效是游戏中常见的一种屏幕效果。这种特效可以模拟真实摄像机的一种图像效果,它让画面中较亮的区域“扩散”到周围的区域中,造成一种朦胧的效果。       Bloom的实现原理非常简单:我们首先根据一个阈值提取出图像中的较亮区域,把它们存储在一张渲染纹理中,再利用高斯模糊对这张渲染纹理进行模糊处理,...

阅读全文>>

标签: Shader

评论(0) 浏览(4855)

法线变换

作者:追风剑情 发布于:2016-12-23 22:53 分类:Shader

      法线(normal),也被称为法矢量(normal vector)。在上面我们已经看到如何使用变换矩阵来变换一个顶点或一个方向矢量,但法线是需要我们特殊处理的一种方向矢量。在游戏中,模型的一个顶点往往会携带额外的信息,而顶点法线就是其中一种信息。当我们变换一个模型的时候,不仅需要变换它的顶点,还需要变换顶点法线,以便在后续处理(如片元着色器)中计算光照等。...

阅读全文>>

标签: Shader

评论(0) 浏览(4611)

高斯滤波

作者:追风剑情 发布于:2016-11-25 21:35 分类:Shader

      前面学习了卷积的概念,并利用卷积实现了一个简单的边缘检测效果。本节学习卷积的另一个常见应用——高斯模糊。模糊的实现有很多方法,例如均值模糊和中值模糊。均值模糊同样使用了卷积操作,它使用的卷积核中的各个元素值都相等,且相加等于1,也就是说,卷积后得到的像素值是其邻域内各个像素值的平均值。而中值模糊则是选择邻域内对所有像素排序后的中值替换掉原颜色。一个更高级的...

阅读全文>>

标签: Shader

评论(0) 浏览(5902)

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号