using UnityEngine; using System.Collections; /// /// 渲染需要广泛那部分的图 /// public class RenderBloomTexture : MonoBehaviour { /// /// 主摄像机 /// public Camera m_FollowCamera; /// /// 渲染需要泛光的摄像机 /// private Camera m_Camera; /// /// 替换shader /// private Shader replaceShader = null; [SerializeField] internal string render_tag = "RenderType"; void Start() { m_Camera = GetComponent(); //摄像机背景要设置为黑色 // m_Camera.enabled = false; m_Camera.clearFlags = CameraClearFlags.SolidColor; m_Camera.backgroundColor = Color.black; UpdateCamera(); UpdateCameraSetting(); } void LateUpdate() { // UpdateCamera(); //调用渲染 if (replaceShader != null) m_Camera.RenderWithShader(replaceShader, render_tag); else Debug.Log("Error of replace shader"); } void UpdateCamera() { transform.position = m_FollowCamera.transform.position; transform.rotation = m_FollowCamera.transform.rotation; } void UpdateCameraSetting() { m_Camera.orthographic = m_FollowCamera.orthographic; m_Camera.orthographicSize = m_FollowCamera.orthographicSize; m_Camera.nearClipPlane = m_FollowCamera.nearClipPlane; m_Camera.farClipPlane = m_FollowCamera.farClipPlane; m_Camera.fieldOfView = m_FollowCamera.fieldOfView; } public void ChangeRenderTag(string tag) { render_tag = tag; } public void SetRenderShader(Shader shader) { replaceShader = shader; } }