Files
BlueArchiveMiniGame/Assets/Scripts/Test/Light/ShadowCapture.cs

47 lines
1.2 KiB
C#
Raw Normal View History

2025-10-16 11:55:24 +08:00
// ShadowCapture.cs
using UnityEngine;
using UnityEngine.Rendering;
public class ShadowCapture : MonoBehaviour
{
public Light mainLight;
public Camera shadowCamera;
public RenderTexture shadowTexture;
private CommandBuffer commandBuffer;
void Start()
{
commandBuffer = new CommandBuffer();
commandBuffer.name = "Shadow Capture";
//// <20><><EFBFBD><EFBFBD>Render Texture
//shadowTexture = new RenderTexture(1024, 1024, 0, RenderTextureFormat.ARGB32);
//shadowTexture.name = "Shadow Map";
// <20><><EFBFBD><EFBFBD>Command Buffer
commandBuffer.SetRenderTarget(shadowTexture);
commandBuffer.ClearRenderTarget(true, true, Color.clear);
// ֻ<><D6BB>Ⱦ<EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
commandBuffer.SetGlobalColor("_ShadowColor", Color.black);
// <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
shadowCamera.AddCommandBuffer(CameraEvent.BeforeForwardOpaque, commandBuffer);
}
void Update()
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Shader
Shader.SetGlobalTexture("_CustomShadowMap", shadowTexture);
}
void OnDestroy()
{
if (commandBuffer != null)
{
shadowCamera.RemoveCommandBuffer(CameraEvent.BeforeForwardOpaque, commandBuffer);
commandBuffer.Dispose();
}
}
}