Ian Mackenzie

Results 122 issues of Ian Mackenzie

Much of the necessary functionality for supporting normal maps is already present inside `elm-3d-scene`, but there's a bit more thought to do on exactly how to expose it and make...

Start with support for equirectangular panoramas, something like ```elm Scene3d.texturedBackground { groundPlane : SketchPlane3d Meters coordinates , equirectangularPanorama : Material.Unlit } -> Background coordinates ``` Depends on #46.

Should be able to reuse much of the shadow edges logic to tag lines with their adjacent face normals, then only render silhouette edges

e.g. set up the same scene in `elm-3d-scene` and Mitsuba and verify that results are similar. Possibly useful reference for checking exposure logic: https://placeholderart.wordpress.com/2014/11/21/implementing-a-physically-based-camera-manual-exposure/

Compare output from rendered scenes in `scripts/TestApp.elm` to reference images using some browser automation (ideally in CI), to detect regressions. Possibly useful: https://github.com/mapbox/pixelmatch, https://pptr.dev/

Will require new shaders: - [ ] Water - [ ] Ceramics (very rough/retroreflective materials) - [ ] Blinn-Phong - [x] Lambertian (diffuse) - [ ] Skin (subsurface scattering) -...

enhancement

Draw an infinite 'ground plane' or similar: ``` Scene3d.plane : Material.Uniform coordinates -> Plane3d Meters coordinates -> Entity coordinates ``` Implement as a full-screen quad by projecting each corner of...

Possible renderers (could potentially support multiple ones!): - [Mitsuba](https://www.mitsuba-renderer.org/) - [YafaRay](http://www.yafaray.org/) - [POV-Ray](http://www.povray.org/) - [Appleseed](https://appleseedhq.net/) - [pt](https://github.com/fogleman/pt) - [Cycles](https://www.cycles-renderer.org/) ([file format examples](https://developer.blender.org/diffusion/C/browse/master/examples/)) - [Radiance](https://www.radiance-online.org/) - [MoonRay](https://openmoonray.org/) Could either convert to...

enhancement

During construction of shadow meshes, detect if there are any open edges; if so, duplicate each face by adding a corresponding back face.

Useful optimization that allows point lights to be ignored past a certain distance; will require adjusting the falloff function to trend smoothly to zero at the given cutoff.