Hacker News new | ask | show | jobs
by psvx 4577 days ago
Even if you ignore volumetrics and splines, a production renderer still needs tons of features. Gradually adding those increases overall system complexity exponentially as of course new features should not break old ones, and need to be backward compatible (scene format wise) as well. Consider f.e. different sampling types for indoors/outdoors/material wise, handling millions of triangles with limited RAM, subdivision surfaces and sub-surface scattering, many many types of materials your users expect you to support (and precompiled combinations there of), speed expectations etc. That's really just scratching the surface about what's in a production renderer. As they say, the devil is in the details :). Of course if you render two spheres on a plane, yeah you can write a tracer for that in 10 minutes and even compete with others.
1 comments

Working in the VFX industry, I'm well aware of what a production renderer needs :)

I wouldn't say adding features increases complexity exponentially - I guess it depends on the design of the system, but that hasn't been my experience with my stuff...

I assume by "different sampling types..." you mean BSDF importance sampling for outgoing direction and sampling the Solid Angle or pdf of taking that direction? If so, I'm not sure I'd call that especially difficult...

Building up ready-to-go materials (certainly as many as Vray ships with) undoubtedly takes time, but in the VFX industry, generally everyone writes their own shaders anyway...

Anyway, my focus is on VFX so I can concentrate on those type of issues, whereas I guess Vray needs to work well across different domains as well (product design, archviz, etc) - that'd be where things start getting difficult to balance out the different requirements I'd assume:

e.g. you can save quite a bit of memory by not storing vertex normals as vec3 floats, but as two 16-bit ushort numbers which can then be mapped via a LUT to the spherical coords of the normal. This is acceptable for VFX, and even in worst-case situations (very zoomed in on a very dense mesh with lots of crinkly displacement), it's barely noticeable, but for archviz people rendering at 10k x 10k, they might spot the issues at that size...