Singularity/Library/PackageCache/com.unity.render-pipelines..../Runtime/Tiling/SliceCombineJob.cs
2024-05-06 11:45:45 -07:00

40 lines
1.1 KiB
C#

using Unity.Burst;
using Unity.Collections;
using Unity.Jobs;
using Unity.Mathematics;
namespace UnityEngine.Rendering.Universal
{
[BurstCompile]
unsafe struct SliceCombineJob : IJobFor
{
public int2 tileResolution;
public int wordsPerTile;
[ReadOnly]
public NativeArray<uint> sliceLightMasksH;
[ReadOnly]
public NativeArray<uint> sliceLightMasksV;
[NativeDisableParallelForRestriction]
public NativeArray<uint> lightMasks;
public void Execute(int idY)
{
var baseIndexH = idY * wordsPerTile;
var baseIndexRow = baseIndexH * tileResolution.x;
for (var idX = 0; idX < tileResolution.x; idX++)
{
var baseIndexV = idX * wordsPerTile;
var baseIndexTile = baseIndexRow + baseIndexV;
for (var wordIndex = 0; wordIndex < wordsPerTile; wordIndex++)
{
lightMasks[baseIndexTile + wordIndex] = sliceLightMasksH[baseIndexH + wordIndex] & sliceLightMasksV[baseIndexV + wordIndex];
}
}
}
}
}