@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
32 lines (26 loc) • 1.22 kB
text/typescript
import {DirectionalLightSopNode} from '../../../src/engine/nodes/sop/DirectionalLight';
import {PolyDictionary} from '../../../src/types/GlobalTypes';
import {BasePreset, NodePresetsCollection, PresetRegister, PresetsCollectionFactory} from '../BasePreset';
const shadowSizePowers = [5, 6, 7, 8, 9, 10, 11];
const directionalLightSopNodePresetsCollectionFactory: PresetsCollectionFactory<DirectionalLightSopNode> = (
node: DirectionalLightSopNode
) => {
const collection = new NodePresetsCollection();
const presetsByName: PolyDictionary<BasePreset> = {};
for (let i = 0; i < shadowSizePowers.length; i++) {
const shadowSizePower = shadowSizePowers[i];
const shadowSize = 2 ** shadowSizePower;
const preset = new BasePreset().addEntry(node.p.shadowRes, [shadowSize, shadowSize]);
const presetName = `shadow resolution ${i}: 2^${shadowSize} (${shadowSize}x${shadowSize})`;
presetsByName[presetName] = preset;
}
collection.setPresets(presetsByName);
return collection;
};
export const directionalLightSopPresetRegister: PresetRegister<
typeof DirectionalLightSopNode,
DirectionalLightSopNode
> = {
nodeClass: DirectionalLightSopNode,
setupFunc: directionalLightSopNodePresetsCollectionFactory,
};