miduo_client/Assets/LuaFramework/Scripts/Utility/FastShadow/ShadowMap.cs

41 lines
1.3 KiB
C#
Raw Normal View History

2020-05-09 13:31:21 +08:00
using UnityEngine;
using System.Collections;
/// <summary>
/// 接受阴影的物体
/// </summary>
public class ShadowMap : MonoBehaviour
{
private Material _mat;
private Camera _lightCamera;
void Start()
{
MeshRenderer render = GetComponent<MeshRenderer>();
_mat = render.material;
foreach (Camera item in Camera.allCameras)
{
if (item.CompareTag("LightCamera"))
{
_lightCamera = item;
break;
}
}
}
void OnWillRenderObject()
{
if (_mat != null && _lightCamera != null)
{
//Gl
//_mat.SetMatrix("_ViewProjectionMat", _lightCamera.projectionMatrix * _lightCamera.worldToCameraMatrix);// unity的camera projectionMatrix是GL风格的列矩阵 http://docs.unity3d.com/ScriptReference/Camera-projectionMatrix.html 投影后的z-[-w,w]
//真正的平台相关的投影矩阵
_mat.SetMatrix("_ViewProjectionMat", GL.GetGPUProjectionMatrix(_lightCamera.projectionMatrix, true) * _lightCamera.worldToCameraMatrix);
_mat.SetTexture("_DepthMap", _lightCamera.targetTexture);
_mat.SetFloat("_NearClip", _lightCamera.nearClipPlane);
_mat.SetFloat("_FarClip", _lightCamera.farClipPlane);
}
}
}