unity5.0很早以前可以动态改自发光
也就是自发光对GI有影响
不过很少有人注意到这点
主要是在动态和静态上也存在不同的情况
有时候用处还是很明显的
下面是在unity5.5上做的测试
首先 作为自发光的物体必须是静态的,
其次材质的emission必须放上图片或者有颜色
然后烘焙和实时分为三种情况
而且emission下有三个选项,none就是自发光不管在哪个模式下都不对全局光产生影响
realtime就是在实时的情况下可以通过代码DynamicGI.UpdateMaterials来调整自发光的亮度或者颜色等等
baked当然也能通过代码调整,但必须是只开了pre的情况下才行,如果既开了pre又开了baked,那么只有设置成realtime才能的才能改变
如果场景只设置了baked,只有烘焙效果,并不能有实时效果
当然两个都没有的话,就没有烘焙效果和实时效果了
下面是控制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UpdataGI : MonoBehaviour {
float tempTime = 0.001f;
void Update () {
if (tempTime < 1) tempTime += 0.001f;
else
tempTime = 0;
this.gameObject.GetComponent<Renderer>().material.SetColor("_EmissionColor", Color.HSVToRGB(tempTime, 1,2));
DynamicGI.UpdateMaterials(this.gameObject.GetComponent<Renderer>());
}
}
图片效果比较像面光源
下面可以用setTexture方式赋值来控制自发光
注意使用的是_EmissionMap
_Color
_MainTex
_Cutoff
_Glossiness
_Metallic
_MetallicGlossMap
_BumpScale
_BumpMap
_Parallax
_ParallaxMap
_OcclusionStrength
_OcclusionMap
_EmissionColor
_EmissionMap
_DetailMask
_DetailAlbedoMap
_DetailNormalMapScale
_DetailNormalMap
_UVSec
_EmissionScaleUI
_EmissionColorUI
_Mode
_SrcBlend
_DstBlend
_ZWrite