MY BLOG DIRECTORY:

todo...

INTRODUCTION:

如果需要一个方案来渲染城镇或空旷的马路上巨量的灯光。图形程序拿到这个需求直接开始搞F+或者延迟光照,但是对于移动端的巨量灯光需求来说,F+或者延迟光照性能也比较吃紧,而且还要支持低端机(苹果5s了解一下!)。即使是优化到极限把那么多灯渲染出来了,这些灯还不是体积光!还是不满足需求。所以在这种情形下我想到了Billboard Volume Light的概念。


MAIN CONTENT:

首先使用Houdini或者什么DCC工具将灯光的形状烘焙到一个纹理里

如果是简单的锥形灯光烘焙起来就十分简单了,如果是形状复杂的灯光可以把灯光切片然后把它烘焙到序列贴图里。然后再把它渲染到一个InstanceBillboard上。使用视角去插值就可以得到有体积的灯光。当然它需要最后被渲染。

下面是我的InstanceBillboard代码

Shader "Unlit/S_BillBoard"
{Properties{_BaseColor("BaseColor", Color) = (1, 1, 1, 1)_SizeH("SizeH", Float) = 1_SizeW("SizeW", Float) = 1}SubShader{Tags { "RenderType"="Opaque" }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma target 3.0#pragma multi_compile_instancing#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;//If you want to access Instancing data in fragment shader//UNITY_VERTEX_INPUT_INSTANCE_ID};half4 _BaseColor;float _SizeW;float _SizeH;v2f vert (appdata v){v2f o;UNITY_SETUP_INSTANCE_ID(v);//If you want to access Instancing data in fragment shader//UNITY_TRANSFER_INSTANCE_ID(v, o);o.uv = v.uv;float2 bias = v.uv * 2 - 1;float4 vert = v.vertex;//Reset vertex positionvert.xyz = 0;//Expand vertex position in screen spacefloat4 wpos = mul(unity_ObjectToWorld, vert);wpos.xyz += normalize(UNITY_MATRIX_V[0].xyz) * bias.r * _SizeW + normalize(UNITY_MATRIX_V[1].xyz) * bias.g * _SizeH;o.vertex = mul(UNITY_MATRIX_VP, wpos);return o;}fixed4 frag (v2f i) : SV_Target{half4 Output = half4(1, 1, 1, 1);Output = _BaseColor;return Output;}ENDCG}}
}

体积光效果如上图所示。把它贴到InstanceBillboard上就可以得到如下效果:

https://www.zhihu.com/video/1225882648054284288


SUMMARY AND OUTLOOK:

对于移动端大规模灯光这种方式十分节省。在不考虑人物会和灯光有交互的情况下,可以绘制成百上千盏装饰性的灯。非常适合大世界手游渲染巨量路灯,或是夜晚城市灯火的需求。


NEXT:

todo...


By YivanLee 2020/3/24

unity scence灯光不显示_Unity渲染编程(灯光篇)【第二卷:MobileVolumetricLight】相关推荐

  1. unity hub是什么东西_Unity可编程渲染管线(SRP)教程:一、自定义管线

    本文翻译自Catlike Coding,原作者:Jasper Flick. 本文经原作者授权,转载请说明出处. 原文链接在下: https://catlikecoding.com/unity/tuto ...

  2. unity scence灯光不显示_Unity基础教程系列(四)——多场景(Loading Levels)

    目录 1 池场景 1.1 在运行时创建场景 1.2 把对象放入场景池 1.3 从重编译中恢复 2 关卡1 2.1 多场景编辑 2.2 场景灯光 2.3 在构建中包含多场景 2.4 加载场景 2.5 等 ...

  3. unity烘培单个物体_Unity可编程渲染管线(SRP)教程:二、自定义着色器

    本文翻译自Catlike Coding,原作者:Jasper Flick. 本文经原作者授权,转载请说明出处. 原文链接在下: https://catlikecoding.com/unity/tuto ...

  4. Unity下的日式卡通渲染实现-阴影篇(二)

    这边文章讲述的是项目中用到的一些卡通渲染阴影相关技术. 一.SDF面部阴影 SDF这个概念具体是什么意思了?可以去观看闫令琪在B站上的101课程,有一节专门讲述了SDF的定义和混合SDF能够产生什么效 ...

  5. Unity下的日式卡通渲染实现-描边篇(三)

    这边文章讲述的是项目中用到的一些卡通渲染描边相关技术. 一.Back Face外扩描边 背面外扩描边和后处理描边是卡通渲染中主要应用到的描边方式. 1.1 实现原理 第一个Pass正常渲染物体.第二个 ...

  6. Unity下的日式卡通渲染实现-着色篇(一)

    这篇文章讲述的是项目中二次元日式卡通着色渲染用到的一些跟着色相关的技术点. 一.卡通着色 何谓卡通着色?大概是让角色看起来卡通的角色吧.这里说的卡通着色,实际上指的是色阶着色.即根据光照和法线计算出当 ...

  7. 并发编程基础篇——第二章(如何创建线程)

    上节讲了基础概念,本章正式进入线程专题,对基础薄弱的同学可以好好看本章!! 1.Thread匿名子类 我们可以通过下面的代码来直接创建一个线程. // 构造方法的参数是给线程指定名字,推荐 Threa ...

  8. Java编程基础篇第二章

    关键字 概述:被Java语言赋予特定含义的单词. 特点:组成关键字的字母全部为小写字母. 标识符 概述:给类,接口,包,方法,常量起名字时的字符序列 组成规则:英文大小写字母,数字,$和- 命名规则. ...

  9. 着色器编程_unity中的基础纹理,使用Unity Shader实现基础纹理的渲染效果

    学习通过使用Unity Shader实现基础纹理的渲染效果 目录 学习通过使用Unity Shader实现基础纹理的渲染效果 问1:详细描述一下漫反射纹理.高度纹理.法线纹理.渐变纹理和遮罩纹理? 问 ...

最新文章

  1. ITRON系统使用方法
  2. 如何设计一门语言(四)——什么是坑(操作模板)
  3. (9)How to take a picture of a black hole
  4. 目前发展医疗物联网的困境解析
  5. 《Spring》(十一) ---- 基于注解的依赖注入
  6. 【转载】CMMI与敏捷开发模式比较
  7. 大小和尚共有100人php,古今诗趣(一)· 数字诗
  8. 基于pytorch的双模态数据载入
  9. 启动jenkins解锁后,报错“Failed to update the default Update Site 'default'”
  10. 深入理解java多态没有烤山药的存在,java就不香了吗?
  11. 【174期】华为OD(外包)社招技术二面,总结复盘
  12. 大厂对软件测试的误解这么深吗?测试岗会越来越少吗?该怎样提升技术?
  13. android屏幕截屏
  14. 深入理解假设检验的两类错误和功效
  15. 用Powerpoint打开ppt文件出现提示:PowerPoint无法显示文件中某些幻灯片中的文字、图像或对象,“xx.ppt”解决办法
  16. ws发布web servlce
  17. android短视频列表自动播放,小程序实现多视频连续播放
  18. 安卓系统主板4g模块开发车载设备方案
  19. mysql 求上个月、上上个月的第一天和最后一天
  20. webQQ获得群列表、好友列表

热门文章

  1. session与PHP之session_start()
  2. 【线性代数】矩阵初等变换与线性方程组公式定理总结
  3. 會變魔術的DreamMail
  4. 微服务与CQRSamp;EventSourcing
  5. 【arduino】【u8g2库】OLED屏-U8glib库 增强版 U8G2库
  6. 图解设计模式 -- 生成实例(二)
  7. 充满科技感的农业,是年轻人的『菜』吗?
  8. Codeforces Round #713 (Div. 3) A~G
  9. python超市售货统计程序_零售超市项目销售数据分析(Python)
  10. 《论语》全译——颜渊篇第十二