Version: 2018.1
public SphericalHarmonicsL2[] bakedProbes ;

Description

Coefficients of baked light probes.

using UnityEngine;
using UnityEngine.Rendering;

public class ExampleClass : MonoBehaviour { public Color m_Ambient; public Light[] m_Lights;

// On start add the contribution of the ambient light and all lights // assigned to the lights array to all baked probes. void Start() { SphericalHarmonicsL2[] bakedProbes = LightmapSettings.lightProbes.bakedProbes; Vector3[] probePositions = LightmapSettings.lightProbes.positions; int probeCount = LightmapSettings.lightProbes.count;

// Clear all probes for (int i = 0; i < probeCount; i++) bakedProbes[i].Clear();

// Add ambient light to all probes for (int i = 0; i < probeCount; i++) bakedProbes[i].AddAmbientLight(m_Ambient);

// Add directional and point lights' contribution to all probes foreach (Light l in m_Lights) { if (l.type == LightType.Directional) { for (int i = 0; i < probeCount; i++) bakedProbes[i].AddDirectionalLight(-l.transform.forward, l.color, l.intensity); } else if (l.type == LightType.Point) { for (int i = 0; i < probeCount; i++) SHAddPointLight(probePositions[i], l.transform.position, l.range, l.color, l.intensity, ref bakedProbes[i]); } } LightmapSettings.lightProbes.bakedProbes = bakedProbes; }

void SHAddPointLight(Vector3 probePosition, Vector3 position, float range, Color color, float intensity, ref SphericalHarmonicsL2 sh) { // From the point of view of an SH probe, point light looks no different than a directional light, // just attenuated and coming from the right direction. Vector3 probeToLight = position - probePosition; float attenuation = 1.0F / (1.0F + 25.0F * probeToLight.sqrMagnitude / (range * range)); sh.AddDirectionalLight(probeToLight.normalized, color, intensity * attenuation); } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961