【add】主入口初始化

This commit is contained in:
2025-11-03 11:25:01 +08:00
commit 87e659271b
1903 changed files with 220684 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
{
"name": "EPOHDRP",
"rootNamespace": "",
"references": [
"EPO",
"Unity.RenderPipelines.Core.Runtime",
"Unity.RenderPipelines.HighDefinition.Runtime"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [
{
"name": "com.unity.render-pipelines.high-definition",
"expression": "0.0.0",
"define": "HDRP_OUTLINE"
},
{
"name": "com.unity.render-pipelines.universal",
"expression": "0.0.0",
"define": "URP_OUTLINE"
}
],
"noEngineReferences": false
}

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 7d134e3a5ae4c494c9f09ba876e370b1
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 157187
packageName: Easy Performant Outline 2D | 3D (URP / HDRP and Built-in Renderer)
packageVersion: 3.5.7
assetPath: Assets/Plugins/Easy performant outline/Scripts/HDRP support/EPO HDRP.asmdef
uploadId: 710656

View File

@@ -0,0 +1,178 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
#if HDRP_OUTLINE
using UnityEngine.Rendering.HighDefinition;
namespace EPOOutline
{
[VolumeComponentMenu("EPO/Outline")]
public class OutlineCustomPass : CustomPass
{
private List<Outlinable> tempOutlinables = new List<Outlinable>();
private static Queue<OutlineParameters> pool = new Queue<OutlineParameters>();
private static Queue<OutlineParameters> parametersInUse = new Queue<OutlineParameters>();
private List<Outliner> outliners = new List<Outliner>();
[SerializeField]
[HideInInspector]
private Camera lastSelectedCamera = null;
protected override void Execute(CustomPassContext ctx)
{
var camera = ctx.hdCamera.camera;
outliners ??= new List<Outliner>();
outliners.Clear();
#if UNITY_EDITOR
if (camera.cameraType == CameraType.SceneView)
{
if (lastSelectedCamera == null)
{
foreach (var obj in UnityEditor.Selection.gameObjects)
{
lastSelectedCamera = obj.GetComponent<Camera>();
if (lastSelectedCamera != null)
lastSelectedCamera.GetComponents(outliners);
if (outliners.Count != 0)
break;
lastSelectedCamera = null;
}
}
outliners.Clear();
if (lastSelectedCamera != null)
lastSelectedCamera.GetComponents(outliners);
}
else
#endif
camera.GetComponents(outliners);
var hdCameraData = ctx.hdCamera;
var commandBuffer = ctx.cmd;
var context = ctx.renderContext;
RTHandle colorTarget;
RTHandle depthTarget;
colorTarget = ctx.cameraColorBuffer;
depthTarget = ctx.cameraDepthBuffer;
foreach (var outliner in outliners)
UpdateOutliner(context, commandBuffer, camera, outliner, hdCameraData, colorTarget, depthTarget);
if (parametersInUse != null)
{
foreach (var param in parametersInUse)
pool.Enqueue(param);
parametersInUse.Clear();
}
}
private void UpdateOutliner(ScriptableRenderContext renderContext, CommandBuffer cmd, Camera camera, Outliner outlineEffect, HDCamera hdCamera, RTHandle colorTarget, RTHandle depthTarget)
{
if (outlineEffect == null || !outlineEffect.enabled)
return;
pool ??= new Queue<OutlineParameters>();
parametersInUse ??= new Queue<OutlineParameters>();
if (pool.Count == 0)
pool.Enqueue(new OutlineParameters(new BasicCommandBufferWrapper(cmd)));
var parameters = pool.Dequeue();
parametersInUse.Enqueue(parameters);
(parameters.Buffer as BasicCommandBufferWrapper).SetCommandBuffer(cmd);
outlineEffect.UpdateSharedParameters(parameters, camera, camera.cameraType == CameraType.SceneView, true, true);
Outlinable.GetAllActiveOutlinables(parameters.OutlinablesToRender);
RendererFilteringUtility.Filter(parameters.Camera, parameters);
parameters.Buffer.EnableShaderKeyword("EPO_HDRP");
parameters.Target = colorTarget;
parameters.DepthTarget = depthTarget;
parameters.TargetWidth = colorTarget.rt.width;
parameters.TargetHeight = colorTarget.rt.height;
parameters.Antialiasing = colorTarget.rt.antiAliasing;
parameters.Scale = new Vector2(colorTarget.rtHandleProperties.rtHandleScale.x, colorTarget.rtHandleProperties.rtHandleScale.y);
var viewportSize = colorTarget.useScaling
? colorTarget.GetScaledSize(colorTarget.rtHandleProperties.currentViewportSize)
: colorTarget.rtHandleProperties.currentViewportSize;
parameters.Viewport = new Rect(Vector2.zero, viewportSize);
parameters.ScaledBufferWidth = viewportSize.x;
parameters.ScaledBufferHeight = viewportSize.y;
if (outlineEffect.RenderingStrategy == OutlineRenderingStrategy.Default)
{
outlineEffect.UpdateSharedParameters(parameters, camera, camera.cameraType == CameraType.SceneView, true, true);
outlineEffect.ReplaceHandles(parameters);
parameters.Prepare();
OutlineEffect.SetupOutline(parameters);
renderContext.ExecuteCommandBuffer((parameters.Buffer as BasicCommandBufferWrapper).UnderlyingBuffer);
parameters.Buffer.Clear();
}
else
{
tempOutlinables ??= new List<Outlinable>();
tempOutlinables.Clear();
tempOutlinables.AddRange(parameters.OutlinablesToRender);
outlineEffect.UpdateSharedParameters(parameters, camera, camera.cameraType == CameraType.SceneView, true, true);
outlineEffect.ReplaceHandles(parameters);
foreach (var outlinable in tempOutlinables)
{
parameters.OutlinablesToRender.Clear();
parameters.OutlinablesToRender.Add(outlinable);
parameters.BlitMesh = null;
parameters.Prepare();
OutlineEffect.SetupOutline(parameters);
renderContext.ExecuteCommandBuffer((parameters.Buffer as BasicCommandBufferWrapper).UnderlyingBuffer);
parameters.Buffer.Clear();
}
if (tempOutlinables.Count == 0)
{
parameters.OutlinablesToRender.Clear();
parameters.Prepare();
parameters.BlitMesh = null;
OutlineEffect.SetupOutline(parameters);
renderContext.ExecuteCommandBuffer((parameters.Buffer as BasicCommandBufferWrapper).UnderlyingBuffer);
parameters.Buffer.Clear();
}
parameters.MeshPool.ReleaseAllMeshes();
}
parameters.Buffer.Clear();
}
}
}
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 08b158e01aa99d14a91e71632e3bceaf
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 3ae1a5450021a9440b4774e3a1961ef4, type: 3}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 157187
packageName: Easy Performant Outline 2D | 3D (URP / HDRP and Built-in Renderer)
packageVersion: 3.5.7
assetPath: Assets/Plugins/Easy performant outline/Scripts/HDRP support/OutlineCustomPass.cs
uploadId: 710656