Unity自定义材质自发光烘焙设置工具
关于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自定义材质自发光烘焙设置工具相关推荐
- Unity中利用材质自发光实现物体闪烁效果
Unity中利用材质自发光实现物体闪烁效果 补充:这种方法有一点问题,在测试(Windows平台)的时候发现,要想在Build出来的游戏中实现闪烁效果,就必须在 Project 窗口中将源材质的自发光 ...
- unity材质球发光_Unity利用材质自发光实现物体闪烁
Unity中利用材质自发光实现物体闪烁效果,供大家参考,具体内容如下 补充:这种方法有一点问题,在测试(Windows平台)的时候发现,要想在Build出来的游戏中实现闪烁效果,就必须在 Projec ...
- unity动态修改标准材质自发光(Emission)
目录 一.目的 1.想知道:unity动态修改标准材质自发光(Emission) 二.参考 1Unity利用材质自发光实现物体闪烁 三.操作:一:完成:变换材质自发光的数值 1.运行效果:材质变换了 ...
- Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板
写在之前 Shader变体.Shader属性定义技巧.自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用 ...
- Unity 自定义Editor 地图编辑工具_使用说明
Unity 自定义Editor 地图编辑工具: 自定义六边形网格数据并生成平面地图 1.打开自定义编辑编辑器 2.设置参数生成网格: 设置参数,点击Create Grid 2.编辑网格类型: !!!S ...
- 小功能⭐️Unity中利用材质自发光实现物体闪烁效果
文章目录 本文基于VDer的文章<Unity中利用材质自发光实现物体闪烁效果>延伸开发 在实现了具有一个Material的物体闪烁发光之后,延伸开发了具有多个Material的自闪烁效果, ...
- SteerMouse for Mac(增强型鼠标自定义设置工具) 破解版
SteerMouse for Mac 破解版是一款增强型鼠标自定义设置工具,想要个性化鼠标设置的朋友可以试试哦!SteerMouse for Mac破解版不仅拥有多种功能,还具备理想的光标运动,在使用 ...
- (转)Unity 5.6 光照烘焙系统介绍
Unity 5.6 光照烘焙系统介绍 一. 基本概念 1. 直接光照.间接光照 直接光照:光源直接照射到物体上,并反射到眼中的光照. 间接光照:光源先照射到其它物体上,并经过一次或多次弹射,最终抵达到 ...
- Unity Shader - Emission 自发光
目录:Unity Shader - 知识点目录(先占位,后续持续更新) 原文:Emission 版本:2019.1 Emission Emission控制从表面发出的光的颜色和强度.当你在场景中使用E ...
最新文章
- 用Python分析本山大叔鬼畜视频为啥这么火
- 开源大数据周刊-第30期
- 3.逆向分析Hello World!程序-下
- 相比 App,Web 开发竟更适合初创公司?
- 复习笔记(七)——C++友元
- 1.10 比较两个数组是否相等(equals())
- Linux wget命令用法详解
- 为什么手机版scp进不去_SCP1471,只属于你一人你的异常狗子,scp基金会系列
- offsetTop、offsetLeft、offsetWidth、offsetHeight、style中的样式
- 自然语言处理与中文分词的难点总结--学习笔记
- 数组中的两个常见异常
- 霆智服务器安装步骤_阿里云服务器安装MySql数据库详细步骤
- 手工从grub引导进入Ubuntu16.04
- 一个不能吃的中秋月饼
- 几行代码实现视图循环旋转,可用于Loading
- win10在电脑已经连接WIFI的情况下查询到WiFi密码(不方便询问或没有办法获得密码的时候)
- Vue动态加载ECharts图表数据小结
- 洗衣机水位传感器原理:检测水位频率
- 百度知道推广技巧大全
- 戴尔笔记本开机提示operating system not found的解决办法