pearcoding / pearray Goto Github PK
View Code? Open in Web Editor NEW[Onhold] Experimental high accurate spectral path and ray tracer.
Home Page: http://pearcoding.eu/projects/pearray/
License: MIT License
[Onhold] Experimental high accurate spectral path and ray tracer.
Home Page: http://pearcoding.eu/projects/pearray/
License: MIT License
A sample library with different "projects" showing different aspects of the framework is needed for easy training and instant feedback.
Examples would be:
Develop a python API to be used easily by tools on top of PearRay, like the Blender Add-On.
Scaling of all integrators is broken. Physical validity has to be proved.
Add simple daylight simulation based features
Need a better and more generic feedback system from the rendering process.
The change of the wavelength when a refraction occurs is not taken care of when intersecting with another surface, while being inside the diffracted domain. This is not visible on a glass sphere, but if something is inside of it, the calculation will get wrong. See for example the front-page screen-shot where water is on top of the floor. The returned reflection color is wrong.
The wavelength in vacuum has to be available all the time, as the index of refraction is calculated by it regardless of the media, but also the wavelength inside media has to be available at least when shading, as spectral lookups have to be done with this wavelength.
Adding this support is worth only when volume is added. IOR should be handled by two media intersecting (e.g. glass material)
Need rework of project (.prc) files
The algorithms are deterministic on his own, but together with multi threading this deterministic approach gets lost. Rework of the pipeline would fix it.
The used probability density function are probably wrong and should be validated!
The UV component is calculated differently in collision detection and sampling.
Allow advanced sensors despite standard cameras and many other features:
Sensor
Film
Output
Problems
The general dependency is: Sensor > Film > Output
but initialization requires at least the mutual communication of sensor and film
A good starting point is the PBRT sensor/film relationship
Add statistical information (like triangle, quad count) for the complete scene!
PPM needs a parallel method, like Parallel Progressive Photon Mapping or just by using spatial hashing maps
Currently the infrastructure can detect multi material meshes as materials are defined per triangle, but the loading process is still missing!
Embed main plugins (and extras too) into the main dll. Better performance and build time.
Adaptive Sampling, more like adaptive cancelling, does not work anymore.
Point lights are represented as spheres and sampled along the surface. This is unnecessary, as only one side of the sphere is visible. Use a disk and point towards the given ray.
Use monochrome rays in the glass and microfacet material to produce wavelength dependent effects when needed.
No environment illumination or emission at his own is not visible in PPM.
Need a memory optimized solution.
The direct integrator seems to be biased, as the direct_py uinttest is failing only for the msi=true version
A huge improvement would be to use ray differentials. The broad structure is already there, but no functions to calculate and use this feature.
Subdivide heavy tiles (big time spent, etc.) in the tile map after each iteration, to ensure maximum thread occupancy. Care should be taken for OutputBufferBucket.
Texture require a flag to make clear that they are used in the emissive case. Could be done as context or instance parameter.
Split pixel samples property to AA samples, DOF samples (Camera samples), Time samples etc. With each has his own sampling technique (user configurable).
Need proper boundaries for the XYZ and RGB converter. Should prevent negative triplets and spectral elements.
Allow multiple output devices
Add the L-System based Hilbert Curve as a tiling mechanism like Morten Code and Spiral. Just for fun. No benefit like in the case of the Morten Code (e.g. locality) or Spiral (e.g. early centric view)
Even while the RGB -> Spectrum -> RGB is quite ok, the spectrum lacks some basic properties.
The resulting spectrums are not positive in all samples and sometimes not even smooth when converting basic colors (like black).
The observation is reproducible within the spectral1 mode in the sandbox.
A non-uniform scale with mesh entities do not produce the right results.
Probably something with the matrix calculation?
Add simple interactive preview raytracer for first impression on material and data.
Keep complex specular and diffuse interaction at minimum. (e.g. only ~4 specular and ~1 diffuse bounce)
-- Requires GPU utilization for fast response.
-- Iterative pixel sampling with only one pixel sample each step.
Our hero wavelength approach has a bias which lets the whitefurnance test or an empty scene with D65 environment illuminant return a value close to 0.9 instead of 1. This may resolve at very high spp, but should be not visible at all at least in such a simple scene.
The calculations for reflection and refraction (or any other wavelength dependent function) do not return an subspace of the spectrum, but the whole one. Following depths should only work on the subspace not the whole space!
Using 'Begin' and 'End' tokens would work, but would destroy the POD structure of the Spectrum class. We need something like SubSpectrum, SpectrumView (bad idea, due to the fact that a copy should be used and not a reference) or SpectrumArea (which sounds like a spectrum in two dimensional domain).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.