给材质加复选框[Toggle()]

作者:追风剑情 发布于:2018-9-24 11:07 分类:Shader

示例Shader // Upgrade NOTE: upgraded instancing buffer 'MyProperties' to new syntax. Shader "Unlit/Sphere1" { Properties { _Color("Color", Color) = (1,1,1,1) //材质上加个复选框 [Toggle(UNI...

阅读全文>>

标签: Shader

评论(0) 浏览(178)

GPU实例化技术(GPU Instancing)

作者:追风剑情 发布于:2018-9-22 16:52 分类:Shader

参考文章 http://www.manew.com/thread-50914-1-1.html 当场景中有大量使用相同材质和网格的物体时,通过GPU Instancing可以大幅降低Draw Call数量。 示例:创建200个小球,看看开启和不开启GPU Instancing时的draw call数量 下面是一个支持GPU Instancing的简单...

阅读全文>>

标签: Shader

评论(0) 浏览(231)

MaterialPropertyBlock

作者:追风剑情 发布于:2018-9-21 16:19 分类:Shader

一、创建测试shader Shader "Unlit/Sphere" { Properties { _MainTex ("Texture", 2D) = "white" {} _Color("Color", Color) = (1,1,1,1) } SubShader { Tags { "RenderType"="Opaque" } LOD ...

阅读全文>>

标签: Shader

评论(0) 浏览(156)

理解EncodeFloatRGBA与DecodeFloatRGBA

作者:追风剑情 发布于:2018-7-11 18:39 分类:Shader

以下是对UnityCG.cginc文件中EncodeFloatRGBA()与DecodeFloatRGBA()两个函数的理解。 //Unity原版代码 // Encoding/decoding [0..1) floats into 8 bit/channel RGBA. Note that 1.0 will not be encoded properly. inline float4 E...

阅读全文>>

标签: Shader

评论(0) 浏览(495)

获取深度和法线纹理的原理

作者:追风剑情 发布于:2017-12-23 12:07 分类:Shader

原理       深度纹理实际就是一张渲染纹理,只不过它里面存储的像素值不是颜色值,而是一个高精度的深度值。由于被存储在一张纹理中,深度纹理的深度值范围是[0, 1],而且通常是非线性分布的。这些值来自于顶点变换后得到的归一化的设备坐标(Normalized Device Coordinates, NDC)。在得到NDC后,深度纹理中的像素值就可以很方便地...

阅读全文>>

标签: Shader

评论(0) 浏览(440)

广告牌

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

一、创建Shader // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject' Shader "Custom/BillboardingShader" { Properties { _MainTex ("Texture", 2D) = "white" {} //调整整体颜色 _...

阅读全文>>

标签: Shader

评论(0) 浏览(358)

自定义阴影Pass

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

自定义阴影Shader // Upgrade NOTE: replaced '_LightMatrix0' with 'unity_WorldToLight' Shader "Custom/LightShader" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _Color ("Color", C...

阅读全文>>

标签: Shader

评论(0) 浏览(453)

透明度物体的阴影

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

在Cube上挂上以下Shader // Upgrade NOTE: replaced '_LightMatrix0' with 'unity_WorldToLight' Shader "Custom/LightShader" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _Color ("Colo...

阅读全文>>

标签: Shader

评论(0) 浏览(477)

统一管理光照衰减和阴影

作者:追风剑情 发布于:2017-11-25 22:06 分类:Shader

在Cube上挂上以下Shader // Upgrade NOTE: replaced '_LightMatrix0' with 'unity_WorldToLight' Shader "Custom/LightShader" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _Color (...

阅读全文>>

标签: Shader

评论(0) 浏览(1118)

让物体接收阴影

作者:追风剑情 发布于:2017-11-24 22:58 分类:Shader

将下面的Shader挂在Cube上 Shader "Custom/LightShader" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} _Color ("Color", Color) = (1,1,1,1) _Specular ("Specular", Color) = (1,1,1,1) ...

阅读全文>>

标签: Shader

评论(0) 浏览(350)

预编译Shader

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

方法一 游戏启动时调用Shader.WarmupAllShaders(),会对当前内存中的所有Shader进行编译并缓存起来。 方法二 Edit->Project Settings->Graphics 在GraphicsSettings中设置需要预编译的Shader,如图: 注意:未编译的Shader会在首次渲染用到时编译并缓存起来(可能会导...

阅读全文>>

标签: Shader

评论(0) 浏览(481)

让物体投射阴影

作者:追风剑情 发布于:2017-11-10 20:24 分类:Shader

一、新建场景 Directional Light开启阴影 Cube和Plane开启阴影 这里有个有趣的现象,右侧的Plane1如果背面朝向Cube是看不到阴影的 选择Cast Shadows: Two Sided ...

阅读全文>>

标签: Shader

评论(0) 浏览(529)

共享材质

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

     无论是动态批处理还是静态批处理,都要求模型之间需要共享同一个材质。但不同的模型之间总会需要有不同的渲染属性,例如,使用不同的纹理、颜色等。这时,我们需要一些策略来尽可能地合并材质。      如果两个材质之间只有使用的纹理不同,我们可以把这些纹理合并到一张更大的纹理中,这张更大的纹理被称为是一张图集(atlas)。一...

阅读全文>>

标签: Shader

评论(0) 浏览(380)

什么是伽马校正

作者:追风剑情 发布于:2017-10-28 12:33 分类:Shader

      要想渲染出更符合真实光照环境的场景就需要使用线性空间。而Unity默认的空间是伽马空间,在伽马空间下进行渲染会导致很多非线性空间下的计算,从而引入了一些误差。而要把伽马空间转换到线性空间,就需要进行伽马校正(Camma Correction)。 伽马校正中的伽马一词来源伽马曲线。通常,伽马曲线的表达如下: 其中指数部...

阅读全文>>

标签: Shader

评论(0) 浏览(639)

光照衰减

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

      Unity使用一张纹理作为查找表来在片元着色器中计算逐像素光照的衰减。这样的好处在于,计算衰减不依赖于数学公式的复杂性,我们只要使用一个参数值去纹理中采样即可。但使用纹理查找计算衰减也有一些弊端。 需要预处理得到采样纹理,而且纹理的大小也会影响衰减的精度。 不直观,同时也不方便,因此一旦把数据存储到查找表中,我们就无...

阅读全文>>

标签: Shader

评论(0) 浏览(668)

在前向渲染中处理不同的光源类型

作者:追风剑情 发布于:2017-10-20 21:34 分类:Shader

示例 工程结构 LightShader.shader文件 // Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld' // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject' ...

阅读全文>>

标签: Shader

评论(0) 浏览(445)

Powered by emlog  蜀ICP备18021003号   sitemap

川公网安备 51019002001593号