small backup
This commit is contained in:
@@ -166,35 +166,42 @@ public sealed class RenderGraph
|
||||
offset = ComputeTextureHash(pData, offset, pass.colorAccess[j].id);
|
||||
}
|
||||
|
||||
*(int*)(pData + offset) = pass.resourceReads.Count;
|
||||
offset += sizeof(int);
|
||||
for (var j = 0; j < pass.resourceReads.Count; j++)
|
||||
for (var j = 0; j < (int)RenderGraphResourceType.Count; j++)
|
||||
{
|
||||
*(int*)(pData + offset) = pass.resourceReads[j].Value;
|
||||
offset += sizeof(int);
|
||||
}
|
||||
var readList = pass.resourceReads[j];
|
||||
var writeList = pass.resourceWrites[j];
|
||||
var createList = pass.resourceCreates[j];
|
||||
|
||||
*(int*)(pData + offset) = pass.resourceWrites.Count;
|
||||
offset += sizeof(int);
|
||||
for (var j = 0; j < pass.resourceWrites.Count; j++)
|
||||
{
|
||||
*(int*)(pData + offset) = pass.resourceWrites[j].Value;
|
||||
*(int*)(pData + offset) = readList.Count;
|
||||
offset += sizeof(int);
|
||||
}
|
||||
for (var k = 0; k < readList.Count; k++)
|
||||
{
|
||||
*(int*)(pData + offset) = readList[k].Value;
|
||||
offset += sizeof(int);
|
||||
}
|
||||
|
||||
*(int*)(pData + offset) = pass.resourceCreates.Count;
|
||||
offset += sizeof(int);
|
||||
for (var j = 0; j < pass.resourceCreates.Count; j++)
|
||||
{
|
||||
*(int*)(pData + offset) = pass.resourceCreates[j].Value;
|
||||
*(int*)(pData + offset) = writeList.Count;
|
||||
offset += sizeof(int);
|
||||
for (var k = 0; k < writeList.Count; k++)
|
||||
{
|
||||
*(int*)(pData + offset) = writeList[k].Value;
|
||||
offset += sizeof(int);
|
||||
}
|
||||
|
||||
*(int*)(pData + offset) = createList.Count;
|
||||
offset += sizeof(int);
|
||||
for (var k = 0; k < createList.Count; k++)
|
||||
{
|
||||
*(int*)(pData + offset) = createList[k].Value;
|
||||
offset += sizeof(int);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//// Hash resource descriptors
|
||||
//for (var i = 0; i < _resources.TextureResourceCount; i++)
|
||||
//for (var j = 0; j < _resources.TextureResourceCount; j++)
|
||||
//{
|
||||
// var resource = _resources.GetTextureResourceByIndex(i);
|
||||
// var resource = _resources.GetTextureResourceByIndex(j);
|
||||
|
||||
// *(int*)(pData + offset) = resource.descriptor.width;
|
||||
// offset += sizeof(int);
|
||||
@@ -260,15 +267,19 @@ public sealed class RenderGraph
|
||||
{
|
||||
var pass = _passes[i];
|
||||
|
||||
// Check if this pass writes to any imported textures
|
||||
for (var j = 0; j < pass.resourceWrites.Count; j++)
|
||||
// Check if this pass writes to any imported resources
|
||||
for (var j = 0; j < (int)RenderGraphResourceType.Count; j++)
|
||||
{
|
||||
var writeHandle = pass.resourceWrites[j];
|
||||
var resource = _resources.GetResource(writeHandle);
|
||||
if (resource.isImported)
|
||||
var writeList = pass.resourceWrites[j];
|
||||
for (var k = 0; k < writeList.Count; k++)
|
||||
{
|
||||
pass.hasSideEffects = true;
|
||||
break;
|
||||
var writeHandle = writeList[k];
|
||||
var resource = _resources.GetResource(writeHandle);
|
||||
if (resource.isImported)
|
||||
{
|
||||
pass.hasSideEffects = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -403,13 +414,17 @@ public sealed class RenderGraph
|
||||
private void UnculDependencies(RenderGraphPassBase pass)
|
||||
{
|
||||
// Un-cull producers of read resources
|
||||
for (var i = 0; i < pass.resourceReads.Count; i++)
|
||||
for (var i = 0; i < (int)RenderGraphResourceType.Count; i++)
|
||||
{
|
||||
UnculProducer(pass.resourceReads[i]);
|
||||
var readList = pass.resourceReads[i];
|
||||
for (var j = 0; j < readList.Count; j++)
|
||||
{
|
||||
UnculProducer(readList[j]);
|
||||
}
|
||||
}
|
||||
|
||||
// Un-cull producers of color attachments
|
||||
for (var i = 0; i <= pass.maxColorIndex; i++)
|
||||
for (var i = 0; i < pass.maxColorIndex; i++)
|
||||
{
|
||||
if (pass.colorAccess[i].id.IsValid)
|
||||
{
|
||||
@@ -533,16 +548,20 @@ public sealed class RenderGraph
|
||||
private void InsertTransitionBarriers(RenderGraphPassBase pass, int passIdx)
|
||||
{
|
||||
// Process reads (transition to shader resource)
|
||||
for (var i = 0; i < pass.resourceReads.Count; i++)
|
||||
for (var i = 0; i < (int)RenderGraphResourceType.Count; i++)
|
||||
{
|
||||
var handle = pass.resourceReads[i];
|
||||
InsertTransitionIfNeeded(handle, ResourceState.ShaderResource, passIdx);
|
||||
var readList = pass.resourceReads[i];
|
||||
for (var j = 0; j < readList.Count; j++)
|
||||
{
|
||||
var handle = readList[j];
|
||||
InsertTransitionIfNeeded(handle, ResourceState.ShaderResource, passIdx);
|
||||
}
|
||||
}
|
||||
|
||||
switch (pass.type)
|
||||
{
|
||||
case RenderPassType.Raster:
|
||||
for (var i = 0; i <= pass.maxColorIndex; i++)
|
||||
for (var i = 0; i < pass.maxColorIndex; i++)
|
||||
{
|
||||
var access = pass.colorAccess[i];
|
||||
InsertTransitionIfNeeded(access.id.AsResource(), ResourceState.RenderTarget, passIdx);
|
||||
@@ -561,10 +580,14 @@ public sealed class RenderGraph
|
||||
|
||||
break;
|
||||
case RenderPassType.Compute:
|
||||
for (var i = 0; i < pass.resourceWrites.Count; i++)
|
||||
for (var i = 0; i < (int)RenderGraphResourceType.Count; i++)
|
||||
{
|
||||
var id = pass.resourceWrites[i];
|
||||
InsertTransitionIfNeeded(id, ResourceState.UnorderedAccess, passIdx);
|
||||
var writeList = pass.resourceWrites[i];
|
||||
for (var j = 0; j < writeList.Count; j++)
|
||||
{
|
||||
var id = writeList[j];
|
||||
InsertTransitionIfNeeded(id, ResourceState.UnorderedAccess, passIdx);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user