关于Unity里自发光材质的烘焙,一个是要加上Meta Pass,一个是要设置材质的Lightmap Flags设置为BakedEmissive
以下为烘焙自发光成功与失败的对比

第一点加上meta pass,以下为URP管线下通用Meta Pass,加载自定义的shader后面,把参数换成自己的参数名就好:

// This pass it not used during regular rendering, only for lightmap baking.
Pass
{Name "Meta"Tags{"LightMode" = "Meta"}Cull OffHLSLPROGRAM#pragma only_renderers gles gles3 glcore d3d11#pragma target 2.0#pragma vertex vert_Meta#pragma fragment frag_Meta#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/MetaInput.hlsl"TEXTURE2D(_BaseMap);                       SAMPLER(sampler_BaseMap);TEXTURE2D(_MetallicGlossMap);              SAMPLER(sampler_MetallicGlossMap);TEXTURE2D(_Emissionmap);                  SAMPLER(sampler_Emissionmap);struct a2v_Meta{float4 positionOS   : POSITION;float3 normalOS     : NORMAL;float2 uv0          : TEXCOORD0;float2 uv1          : TEXCOORD1;float2 uv2          : TEXCOORD2;#ifdef _TANGENT_TO_WORLDfloat4 tangentOS     : TANGENT;#endif};struct v2f_Meta{float4 positionCS   : SV_POSITION;float2 uv           : TEXCOORD0;};v2f_Meta vert_Meta(a2v_Meta input){v2f_Meta output = (v2f_Meta)0;output.positionCS = MetaVertexPosition(input.positionOS, input.uv1, input.uv2, unity_LightmapST, unity_DynamicLightmapST);output.uv = TRANSFORM_TEX(input.uv0, _BaseMap);return output;}half4 frag_Meta(v2f_Meta input) : SV_Target{SurfaceData surfaceData;half4 albedoAlpha = SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, input.uv);surfaceData.albedo = albedoAlpha.rgb * _BaseColor.rgb;surfaceData.alpha = albedoAlpha.a * _BaseColor.a;half4 metallicGlossOcclusion = SAMPLE_TEXTURE2D(_MetallicGlossMap, sampler_MetallicGlossMap, input.uv);surfaceData.metallic = _Metallic * metallicGlossOcclusion.r;surfaceData.smoothness = _Smoothness * metallicGlossOcclusion.a;surfaceData.specular = _SpecularColor.rgb;surfaceData.emission = SAMPLE_TEXTURE2D(_Emissionmap, sampler_Emissionmap, input.uv).rgb * _Emission.rgb;surfaceData.clearCoatMask = 0.0h;surfaceData.clearCoatSmoothness = 0.0h;BRDFData brdfData;InitializeBRDFData(surfaceData.albedo, surfaceData.metallic, surfaceData.specular, surfaceData.smoothness, surfaceData.alpha, brdfData);MetaInput metaInput;metaInput.Albedo = brdfData.diffuse + brdfData.specular * brdfData.roughness * 0.5;metaInput.SpecularColor = surfaceData.specular;metaInput.Emission = surfaceData.emission;return MetaFragment(metaInput);}ENDHLSL
}

第二点设置材质的Lightmap Flags,可以用代码mat.globalIlluminationFlags = MaterialGlobalIlluminationFlags.BakedEmissive来设置,或者在Debug模式下,把材质的LightmapFlags改为4

做了个小工具,便于美术在材质面板上,点击右上角的齿轮,就可以很轻松的设置哪些材质需要自发光烘焙

以下是代码,放进工程里就好

using UnityEngine;
using UnityEditor;public class MaterialBakedEmissionTool : MonoBehaviour
{// Start is called before the first frame update[MenuItem("CONTEXT/Material/Set Baked Emission")]public static void SetBakedEmission(MenuCommand menuCommand){var mat = menuCommand.context as Material;if (mat != null){mat.globalIlluminationFlags = MaterialGlobalIlluminationFlags.BakedEmissive;}}[MenuItem("CONTEXT/Material/Reset Baked Emission")]public static void ResetBakedEmission(MenuCommand menuCommand){var mat = menuCommand.context as Material;if (mat != null){mat.globalIlluminationFlags = MaterialGlobalIlluminationFlags.None;}}
}

Unity自定义材质自发光烘焙设置工具相关推荐

  1. Unity中利用材质自发光实现物体闪烁效果

    Unity中利用材质自发光实现物体闪烁效果 补充:这种方法有一点问题,在测试(Windows平台)的时候发现,要想在Build出来的游戏中实现闪烁效果,就必须在 Project 窗口中将源材质的自发光 ...

  2. unity材质球发光_Unity利用材质自发光实现物体闪烁

    Unity中利用材质自发光实现物体闪烁效果,供大家参考,具体内容如下 补充:这种方法有一点问题,在测试(Windows平台)的时候发现,要想在Build出来的游戏中实现闪烁效果,就必须在 Projec ...

  3. unity动态修改标准材质自发光(Emission)

    目录 一.目的 1.想知道:unity动态修改标准材质自发光(Emission) 二.参考 1Unity利用材质自发光实现物体闪烁 三.操作:一:完成:变换材质自发光的数值 1.运行效果:材质变换了 ...

  4. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板

    写在之前 Shader变体.Shader属性定义技巧.自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用 ...

  5. Unity 自定义Editor 地图编辑工具_使用说明

    Unity 自定义Editor 地图编辑工具: 自定义六边形网格数据并生成平面地图 1.打开自定义编辑编辑器 2.设置参数生成网格: 设置参数,点击Create Grid 2.编辑网格类型: !!!S ...

  6. 小功能⭐️Unity中利用材质自发光实现物体闪烁效果

    文章目录 本文基于VDer的文章<Unity中利用材质自发光实现物体闪烁效果>延伸开发 在实现了具有一个Material的物体闪烁发光之后,延伸开发了具有多个Material的自闪烁效果, ...

  7. SteerMouse for Mac(增强型鼠标自定义设置工具) 破解版

    SteerMouse for Mac 破解版是一款增强型鼠标自定义设置工具,想要个性化鼠标设置的朋友可以试试哦!SteerMouse for Mac破解版不仅拥有多种功能,还具备理想的光标运动,在使用 ...

  8. (转)Unity 5.6 光照烘焙系统介绍

    Unity 5.6 光照烘焙系统介绍 一. 基本概念 1. 直接光照.间接光照 直接光照:光源直接照射到物体上,并反射到眼中的光照. 间接光照:光源先照射到其它物体上,并经过一次或多次弹射,最终抵达到 ...

  9. Unity Shader - Emission 自发光

    目录:Unity Shader - 知识点目录(先占位,后续持续更新) 原文:Emission 版本:2019.1 Emission Emission控制从表面发出的光的颜色和强度.当你在场景中使用E ...

最新文章

  1. 用Python分析本山大叔鬼畜视频为啥这么火
  2. 开源大数据周刊-第30期
  3. 3.逆向分析Hello World!程序-下
  4. 相比 App,Web 开发竟更适合初创公司?
  5. 复习笔记(七)——C++友元
  6. 1.10 比较两个数组是否相等(equals())
  7. Linux wget命令用法详解
  8. 为什么手机版scp进不去_SCP1471,只属于你一人你的异常狗子,scp基金会系列
  9. offsetTop、offsetLeft、offsetWidth、offsetHeight、style中的样式
  10. 自然语言处理与中文分词的难点总结--学习笔记
  11. 数组中的两个常见异常
  12. 霆智服务器安装步骤_阿里云服务器安装MySql数据库详细步骤
  13. 手工从grub引导进入Ubuntu16.04
  14. 一个不能吃的中秋月饼
  15. 几行代码实现视图循环旋转,可用于Loading
  16. win10在电脑已经连接WIFI的情况下查询到WiFi密码(不方便询问或没有办法获得密码的时候)
  17. Vue动态加载ECharts图表数据小结
  18. 洗衣机水位传感器原理:检测水位频率
  19. 百度知道推广技巧大全
  20. 戴尔笔记本开机提示operating system not found的解决办法

热门文章

  1. 网络渗透——CTF实践
  2. 怎么视频转语音更快速?视频转语音方法分享
  3. hadoop集群部署超级详细
  4. 攻防世界新手Misc writeup
  5. 校园网连接不上 问题解决记录
  6. 【微信公众号开发】【6】图文消息加强
  7. 药剂师揭露中药行业内幕:代煎多偷工减料
  8. 英语学习笔记(经典100句)
  9. 程序员--经典10道脑力题
  10. 学习 《模型思维》-斯科特·佩奇 笔记 9.27