Refactor SPMD job system, add GGX mipmap benchmark

- Replace IJobSPMD with T4-generated, multi-type SPMD job interfaces and wrappers (up to 8 numeric types)
- Extend ISPMD with Cast/BitCast; implement for ScalarLane and WideLane (SIMD-aware)
- Add unary minus, scalar-lane, and lane-scalar operators to Vector2/3/4; improve Select methods
- WideLane now partial with T4-generated Cast/BitCast (SIMD conversions)
- SPMD job Execute now requires unmanaged TLane; update all usages and benchmarks
- Add GGXMipGenerationBenchmark with vectorized and scalar paths, SkiaSharp output
- Update project files: add generated code, SkiaSharp, bump version to 1.3.0
- Misc: fix formatting, method signatures, FreeList logic
This commit is contained in:
2026-04-25 01:50:06 +09:00
parent a704cb19ec
commit cfd01eb9b6
24 changed files with 2501 additions and 204 deletions

View File

@@ -297,8 +297,9 @@ public static unsafe partial class MathV
{
return new <#= vectorType #>
{
x = <#= TLane #>.Select(condition, b.x, a.x),
y = <#= TLane #>.Select(condition, b.y, a.y),
<# for (int i = 0; i < dimension; i++) { #>
<#= components[i] #> = <#= TLane #>.Select(condition, b.<#= components[i] #>, a.<#= components[i] #>),
<# } #>
};
}
@@ -309,8 +310,9 @@ public static unsafe partial class MathV
{
return new <#= vectorType #>
{
x = <#= TLane #>.Select(condition.x, b.x, a.x),
y = <#= TLane #>.Select(condition.y, b.y, a.y),
<# for (int i = 0; i < dimension; i++) { #>
<#= components[i] #> = <#= TLane #>.Select(condition.<#= components[i] #>, b.<#= components[i] #>, a.<#= components[i] #>),
<# } #>
};
}