FIndirectLightingCacheAllocation* FIndirectLightingCache::CreateAllocation(int32 BlockSize, const FBoxSphereBounds& Bounds, bool bPointSample, bool bUnbuiltPreview) { check(BlockSize > 1 || bPointSample); FIndirectLightingCacheAllocation* NewAllocation = new FIndirectLightingCacheAllocation(); FIndirectLightingCacheBlock NewBlock; //@todo - don't allocate point samples from the layout, they don't go through the volume texture if (AllocateBlock(BlockSize, NewBlock.MinTexel)) { NewBlock.TexelSize = BlockSize; CalculateBlockPositionAndSize(Bounds, BlockSize, NewBlock.Min, NewBlock.Size); FVector Scale; FVector Add; FVector MinUV; FVector MaxUV; CalculateBlockScaleAndAdd(NewBlock.MinTexel, NewBlock.TexelSize, NewBlock.Min, NewBlock.Size, Scale, Add, MinUV, MaxUV); VolumeBlocks.Add(NewBlock.MinTexel, NewBlock); NewAllocation->SetParameters(NewBlock.MinTexel, NewBlock.TexelSize, Scale, Add, MinUV, MaxUV, bPointSample, bUnbuiltPreview); } return NewAllocation; }
FIndirectLightingCacheAllocation* FIndirectLightingCache::CreateAllocation(int32 BlockSize, const FBoxSphereBounds& Bounds, bool bOpaqueRelevance) { FIndirectLightingCacheAllocation* NewAllocation = new FIndirectLightingCacheAllocation(); FIndirectLightingCacheBlock NewBlock; if (AllocateBlock(BlockSize, NewBlock.MinTexel)) { NewBlock.TexelSize = BlockSize; CalculateBlockPositionAndSize(Bounds, BlockSize, NewBlock.Min, NewBlock.Size); FVector Scale; FVector Add; FVector MinUV; FVector MaxUV; CalculateBlockScaleAndAdd(NewBlock.MinTexel, NewBlock.TexelSize, NewBlock.Min, NewBlock.Size, Scale, Add, MinUV, MaxUV); VolumeBlocks.Add(NewBlock.MinTexel, NewBlock); NewAllocation->SetParameters(NewBlock.MinTexel, NewBlock.TexelSize, Scale, Add, MinUV, MaxUV, bOpaqueRelevance); } return NewAllocation; }