@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
60 lines (53 loc) • 1.86 kB
text/typescript
import {DEMO_ASSETS_ROOT_URL} from '../../../src/core/Assets';
import {ImageEXRCopNode} from '../../../src/engine/nodes/cop/ImageEXR';
import {BasePreset, NodePresetsCollection, PresetRegister, PresetsCollectionFactory} from '../BasePreset';
const list = [
'brown_photostudio_02_1k',
'brown_photostudio_03_1k',
'brown_photostudio_05_1k',
'brown_photostudio_06_1k',
'brown_photostudio_07_1k',
'christmas_photo_studio_01_1k',
'christmas_photo_studio_03_1k',
'neon_photostudio_1k',
'photo_studio_loft_hall_1k',
'preller_drive_1k',
'provence_studio_1k',
'satara_night_1k',
'studio_small_03_1k',
'studio_small_07_1k',
'studio_small_08_1k',
'studio_small_09_1k',
];
export function imageEXRPresetUrls() {
return list.map((fileName) => ({
fileName,
url: `${DEMO_ASSETS_ROOT_URL}/textures/resources/polyhaven.com/envmaps/${fileName}.exr`,
thumbnail: `${DEMO_ASSETS_ROOT_URL}/textures/resources/polyhaven.com/envmaps/thumbnails/${fileName}.jpg`,
}));
}
const imageEXRCopNodePresetsCollectionFactory: PresetsCollectionFactory<ImageEXRCopNode> = (node: ImageEXRCopNode) => {
const collection = new NodePresetsCollection();
function polyhavenEnvMaps() {
const dict: Record<string, BasePreset> = {};
const urls = imageEXRPresetUrls();
for (let fileData of urls) {
const preset = new BasePreset()
.addEntry(node.p.url, fileData.url)
.addEntry(node.p.tanisotropy, 1)
.addEntry(node.p.useRendererMaxAnisotropy, 1)
.addEntry(node.p.tminFilter, 1)
.addEntry(node.p.tmagFilter, 1);
dict[`polyhaven/${fileData.fileName}`] = preset;
}
return dict;
}
collection.setPresets({
...polyhavenEnvMaps(),
});
return collection;
};
export const imageEXRCopPresetRegister: PresetRegister<typeof ImageEXRCopNode, ImageEXRCopNode> = {
nodeClass: ImageEXRCopNode,
setupFunc: imageEXRCopNodePresetsCollectionFactory,
};