47 lines
1.2 KiB
C#
47 lines
1.2 KiB
C#
|
|
// 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();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|