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" />
<PackageReference Include="Prowl.Photonic" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=Prowl.Photonic&version=3.2.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
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+LightmapTargetgive you aBeginScene/BeginMesh/Endflow- 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
Vector128AABB packs, one SIMD ray-vs-4-AABB per inner-node visit) - AVX2 leaves: 8-triangle Moller-Trumbore in
Vector256(LoadUnsafeover SoA edge arrays) - Parallel-for over rows, deterministic per-texel seeding
- BVH4 with binary SAH + binned splits, collapsed to 4-wide nodes (SoA
Lighting
- Directional, point, spot
- Next-event estimation at every bounce hit
- Pluggable
IAttenuation(InverseSquare,NormalizedQuadratic,Constant) IncludeDirectLightingfor indirect-only bakes, or per-lightBakeDirectfor mixed lighting
Sparse sampling
SparseStridetraces 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 | Versions 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.
-
net10.0
- Prowl.Vector (>= 3.2.1)
-
net8.0
- Prowl.Vector (>= 3.2.1)
-
net9.0
- Prowl.Vector (>= 3.2.1)
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