Merge branch 'master' of https://gitee.com/starbeats/unity_native_render
This commit is contained in:
commit
e167a58180
@ -250,8 +250,9 @@ namespace UnityEngine.Rendering.Universal.Internal
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
var useDx12 = SystemInfo.graphicsDeviceType == GraphicsDeviceType.Direct3D12;
|
||||||
var asset = UniversalRenderPipeline.asset;
|
var asset = UniversalRenderPipeline.asset;
|
||||||
if(asset.VRSRate != RenderingPlugin.VRSPluginShadingRate.X1_PER_PIXEL)
|
void EnableVrs(CommandBuffer cmd, bool useDx12, in RenderingData renderingData, UniversalRenderPipelineAsset asset)
|
||||||
{
|
{
|
||||||
#if PLATFORM_IOS || UNITY_STANDALONE_OSX
|
#if PLATFORM_IOS || UNITY_STANDALONE_OSX
|
||||||
DataPack* ptr = (DataPack*)vrsDataPackPtr.ToPointer();
|
DataPack* ptr = (DataPack*)vrsDataPackPtr.ToPointer();
|
||||||
@ -294,22 +295,35 @@ namespace UnityEngine.Rendering.Universal.Internal
|
|||||||
cmd.BeginSample("EnableVrs");
|
cmd.BeginSample("EnableVrs");
|
||||||
cmd.IssuePluginEventAndData(RenderingPlugin.GetRenderEventAndDataFunc(), (int)RenderingPlugin.NativeRenderingEvent.EnableVRS, vrsDataPackPtr);
|
cmd.IssuePluginEventAndData(RenderingPlugin.GetRenderEventAndDataFunc(), (int)RenderingPlugin.NativeRenderingEvent.EnableVRS, vrsDataPackPtr);
|
||||||
#else
|
#else
|
||||||
|
cmd.BeginSample("EnableVrs");
|
||||||
*(int*)vrsEnumPtr.ToPointer() = (int)asset.VRSRate;
|
*(int*)vrsEnumPtr.ToPointer() = (int)asset.VRSRate;
|
||||||
cmd.IssuePluginEventAndData(RenderingPlugin.GetRenderEventAndDataFunc(), (int)RenderingPlugin.NativeRenderingEvent.EnableVRS, vrsEnumPtr);
|
cmd.IssuePluginEventAndData(RenderingPlugin.GetRenderEventAndDataFunc(), (int)RenderingPlugin.NativeRenderingEvent.EnableVRS, vrsEnumPtr);
|
||||||
context.ExecuteCommandBuffer(cmd);
|
|
||||||
cmd.Clear();
|
|
||||||
#endif
|
#endif
|
||||||
cmd.EndSample("EnableVrs");
|
cmd.EndSample("EnableVrs");
|
||||||
|
context.ExecuteCommandBuffer(cmd);
|
||||||
#if DX12
|
cmd.Clear();
|
||||||
|
if (useDx12)
|
||||||
|
{
|
||||||
// DX12 下会 context.DrawRenderers 重新设置 view port 和 scissor rect
|
// DX12 下会 context.DrawRenderers 重新设置 view port 和 scissor rect
|
||||||
cmd.SetViewport(camera.pixelRect);
|
Rect renderRect = new Rect(0, 0, renderingData.cameraData.cameraTargetDescriptor.width, renderingData.cameraData.cameraTargetDescriptor.height);
|
||||||
cmd.EnableScissorRect(camera.pixelRect);
|
cmd.SetViewport(renderRect);
|
||||||
#endif
|
cmd.EnableScissorRect(renderRect);
|
||||||
}
|
}
|
||||||
#if DX12 || UNITY_STANDALONE_OSX
|
}
|
||||||
RendererUtils.RendererListDesc rendererListDesc = new (data.m_ShaderTagIdList.ToArray(), renderingData.cullResults,camera);
|
|
||||||
rendererListDesc.layerMask = camera.cullingMask;
|
void DisableVrs()
|
||||||
|
{
|
||||||
|
cmd.BeginSample("DisableVrs");
|
||||||
|
cmd.IssuePluginEventAndData(RenderingPlugin.GetRenderEventAndDataFunc(), (int)RenderingPlugin.NativeRenderingEvent.DisableVRS, IntPtr.Zero);
|
||||||
|
cmd.EndSample("DisableVrs");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.m_IsOpaque)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (useDx12)
|
||||||
|
{
|
||||||
|
RendererUtils.RendererListDesc rendererListDesc = new(data.m_ShaderTagIdList.ToArray(), renderingData.cullResults, camera);
|
||||||
rendererListDesc.sortingCriteria = sortFlags;
|
rendererListDesc.sortingCriteria = sortFlags;
|
||||||
rendererListDesc.renderQueueRange = filterSettings.renderQueueRange;
|
rendererListDesc.renderQueueRange = filterSettings.renderQueueRange;
|
||||||
rendererListDesc.layerMask = filterSettings.layerMask;
|
rendererListDesc.layerMask = filterSettings.layerMask;
|
||||||
@ -317,15 +331,48 @@ namespace UnityEngine.Rendering.Universal.Internal
|
|||||||
rendererListDesc.rendererConfiguration = drawSettings.perObjectData;
|
rendererListDesc.rendererConfiguration = drawSettings.perObjectData;
|
||||||
rendererListDesc.stateBlock = data.m_RenderStateBlock;
|
rendererListDesc.stateBlock = data.m_RenderStateBlock;
|
||||||
cmd.DrawRendererList(context.CreateRendererList(rendererListDesc));
|
cmd.DrawRendererList(context.CreateRendererList(rendererListDesc));
|
||||||
#else
|
if (asset.VRSRate != RenderingPlugin.VRSPluginShadingRate.X1_PER_PIXEL)
|
||||||
|
{
|
||||||
|
EnableVrs(cmd, useDx12, renderingData, asset);
|
||||||
|
rendererListDesc.layerMask = 1 << 31;
|
||||||
|
cmd.DrawRendererList(context.CreateRendererList(rendererListDesc));
|
||||||
|
DisableVrs();
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd.DisableScissorRect();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
context.DrawRenderers(renderingData.cullResults, ref drawSettings, ref filterSettings, ref data.m_RenderStateBlock);
|
context.DrawRenderers(renderingData.cullResults, ref drawSettings, ref filterSettings, ref data.m_RenderStateBlock);
|
||||||
#endif
|
|
||||||
|
|
||||||
if (asset.VRSRate != RenderingPlugin.VRSPluginShadingRate.X1_PER_PIXEL)
|
if (asset.VRSRate != RenderingPlugin.VRSPluginShadingRate.X1_PER_PIXEL)
|
||||||
{
|
{
|
||||||
cmd.BeginSample("DisableVrs");
|
EnableVrs(cmd, useDx12, renderingData, asset);
|
||||||
cmd.IssuePluginEventAndData(RenderingPlugin.GetRenderEventAndDataFunc(), (int)RenderingPlugin.NativeRenderingEvent.DisableVRS, IntPtr.Zero);
|
filterSettings.layerMask = 1 << 31;
|
||||||
cmd.EndSample("DisableVrs");
|
context.DrawRenderers(renderingData.cullResults, ref drawSettings, ref filterSettings, ref data.m_RenderStateBlock);
|
||||||
|
DisableVrs();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (asset.VRSRate != RenderingPlugin.VRSPluginShadingRate.X1_PER_PIXEL)
|
||||||
|
{
|
||||||
|
EnableVrs(cmd, useDx12, renderingData, asset);
|
||||||
|
|
||||||
|
RendererUtils.RendererListDesc rendererListDesc = new(data.m_ShaderTagIdList.ToArray(), renderingData.cullResults, camera);
|
||||||
|
rendererListDesc.sortingCriteria = sortFlags;
|
||||||
|
rendererListDesc.renderQueueRange = filterSettings.renderQueueRange;
|
||||||
|
rendererListDesc.layerMask = filterSettings.layerMask;
|
||||||
|
rendererListDesc.excludeObjectMotionVectors = false;
|
||||||
|
rendererListDesc.rendererConfiguration = drawSettings.perObjectData;
|
||||||
|
rendererListDesc.stateBlock = data.m_RenderStateBlock;
|
||||||
|
cmd.DrawRendererList(context.CreateRendererList(rendererListDesc));
|
||||||
|
DisableVrs();
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd.DisableScissorRect();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Render objects that did not match any shader pass with error shader
|
// Render objects that did not match any shader pass with error shader
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
%YAML 1.1
|
%YAML 1.1
|
||||||
%TAG !u! tag:yousandi.cn,2023:
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
--- !u!78 &1
|
--- !u!78 &1
|
||||||
TagManager:
|
TagManager:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
@ -40,7 +40,7 @@ TagManager:
|
|||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
- VRS
|
||||||
m_SortingLayers:
|
m_SortingLayers:
|
||||||
- name: Default
|
- name: Default
|
||||||
uniqueID: 0
|
uniqueID: 0
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user