MCPcopy
hub / github.com/sparkjsdev/spark / makeNormalColorModifier

Function makeNormalColorModifier

src/modifiers/normalColor.ts:18–40  ·  view source on GitHub ↗
(splatToView: SplatTransformer)

Source from the content-addressed store, hash-verified

16} from "../dyno";
17
18export function makeNormalColorModifier(splatToView: SplatTransformer) {
19 return dynoBlock({ gsplat: Gsplat }, { gsplat: Gsplat }, ({ gsplat }) => {
20 if (!gsplat) {
21 throw new Error("No gsplat input");
22 }
23 let normal = gsplatNormal(gsplat);
24
25 const viewGsplat = splatToView.applyGsplat(gsplat);
26 const viewCenter = splitGsplat(viewGsplat).outputs.center;
27 const viewNormal = gsplatNormal(viewGsplat);
28 const splatDot = dot(viewCenter, viewNormal);
29
30 const sameDir = greaterThanEqual(splatDot, dynoConst("float", 0));
31 normal = select(sameDir, neg(normal), normal);
32 const rgb = add(
33 mul(normal, dynoConst("float", 0.5)),
34 dynoConst("float", 0.5),
35 );
36
37 gsplat = combineGsplat({ gsplat, rgb });
38 return { gsplat };
39 });
40}
41
42export function setWorldNormalColor(splats: SplatMesh) {
43 splats.enableWorldToView = true;

Callers 1

setWorldNormalColorFunction · 0.85

Calls 12

dynoBlockFunction · 0.90
gsplatNormalFunction · 0.90
splitGsplatFunction · 0.90
dotFunction · 0.90
greaterThanEqualFunction · 0.90
dynoConstFunction · 0.90
selectFunction · 0.90
negFunction · 0.90
addFunction · 0.90
mulFunction · 0.90
combineGsplatFunction · 0.90
applyGsplatMethod · 0.80

Tested by

no test coverage detected