small backup

This commit is contained in:
2026-01-13 14:50:55 +09:00
parent 02df8d7732
commit ac36bbf8c7
9 changed files with 1522 additions and 61 deletions

View File

@@ -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;