Prowl.Photonic 3.2.1

dotnet add package Prowl.Photonic --version 3.2.1
                    
NuGet\Install-Package Prowl.Photonic -Version 3.2.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Prowl.Photonic" Version="3.2.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Prowl.Photonic" Version="3.2.1" />
                    
Directory.Packages.props
<PackageReference Include="Prowl.Photonic" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Prowl.Photonic --version 3.2.1
                    
#r "nuget: Prowl.Photonic, 3.2.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Prowl.Photonic@3.2.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Prowl.Photonic&version=3.2.1
                    
Install as a Cake Addin
#tool nuget:?package=Prowl.Photonic&version=3.2.1
                    
Install as a Cake Tool

Prowl.Photonic

A CPU lightmap baker for the Prowl Game Engine. Imperative builder API: scene + meshes + lights in, baked HDR atlas pages out. Direct + indirect path-traced lighting, BVH4 + AVX2 SIMD acceleration, progressive accumulation.

Features

  • Imperative builder API

    • BakeScene + BakeMesh.Builder + LightmapTarget give you a BeginScene / BeginMesh / End flow
    • Per-instance world transform, per-target atlas placement (offset / scale into the bake UV layer)
    • Auto-atlas packer "drop a list of meshes in, get N atlas pages out"
  • Acceleration

    • BVH4 with binary SAH + binned splits, collapsed to 4-wide nodes (SoA Vector128 AABB packs, one SIMD ray-vs-4-AABB per inner-node visit)
    • AVX2 leaves: 8-triangle Moller-Trumbore in Vector256 (LoadUnsafe over SoA edge arrays)
    • Parallel-for over rows, deterministic per-texel seeding
  • Lighting

    • Directional, point, spot
    • Next-event estimation at every bounce hit
    • Pluggable IAttenuation (InverseSquare, NormalizedQuadratic, Constant)
    • IncludeDirectLighting for indirect-only bakes, or per-light BakeDirect for mixed lighting
  • Sparse sampling

    • SparseStride traces one texel per NxN cell and interpolates the rest from the traced points, which converges dramatically faster on indirect
  • Artifact fixes

    • Conservative SAT-based texel rasterisation with centroid bias and strict-inside-wins claim semantics
    • Samples pushed out of solid geometry, stepping past the nearest wall
    • Phong-tessellated shading position, with per-triangle fallback to flat where the smooth position is occluded
    • UV seam stitching and edge dilation

Usage

using var baker = new LightmapBaker();
baker.Options.Bounces = 2;
baker.Options.SamplesPerIteration = 1;
baker.Options.IncludeDirectLighting = true;

var target = baker.CreateTextureTarget("atlas0", 512, 512);
var scene  = baker.BeginScene("Sponza");

var mat = scene.CreateMaterial("floor");
mat.DiffuseColor = new Float3(0.8f, 0.8f, 0.8f);

var mesh = scene.BeginMesh("floor")
                .AddVertices(positions, normals)
                .AddUVLayer("UV0", materialUVs)
                .AddUVLayer("UV1", lightmapUVs)
                .AddMaterialGroup("floor", indices)
                .End();
target.AddBakeInstance(mesh, Float4x4.Identity);

scene.CreateDirectionalLight("sun", Float4x4.Identity, new Float3(8f, 7f, 6f));
scene.End();

var job = baker.Start();
job.RunIterations(64);   // headless: fold 64 iters then stop
baker.Cancel();

byte[] ldr = target.ReadLDR(exposure: 1f, gamma: 1f / 2.2f);

License

MIT. See LICENSE.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.2.1 47 8/26/2026
3.1.0 134 8/10/2026
3.0.5 94 8/9/2026
3.0.4 105 8/9/2026
3.0.1 125 8/4/2026
3.0.0 118 8/2/2026
2.9.3 115 7/30/2026
2.9.2 102 7/30/2026
2.9.1 97 7/30/2026
2.8.6 100 7/25/2026
2.8.5 117 7/24/2026
2.8.3 95 7/24/2026
2.8.2 99 7/24/2026
2.7.0 136 7/16/2026
2.6.3 145 7/13/2026
2.6.0 113 7/12/2026
2.5.5 124 7/11/2026
2.5.4 146 7/9/2026
2.5.1 106 7/9/2026
2.4.0 122 7/7/2026
Loading failed