IMPORTANT UPDATE: Universalshader Fusion GPU final is out. If you need a smaller node with only one output socket, intelligent internals, better SSS and less/easier settings download it here:
Still there are some things that only the normal Universalshader provides such as matte, fakes and emission.
-Bugfix (development absorbtion socket removed)
-Fixed SSS node mistake (s*** happens :-D). Everything should be ok now. If you find something > feedback here or blenderartists. Thanks. :-)
Added wavelength environment node ! Simply put it as the environment texture, attach an image to it, and voala, you have a NONoverexposed, SPECTRAL environment! It includes gamma and HSV preprocessing controls for the inmage. It converts/remaps any image to wavelengths, also LDR. It is not an RGB splitter, but true float wavelength remapping with curves!
Added wavelength absorbtion settings to ALL shaders + the option to mix with the usual color input.
Added Fresnel to Transparency
Fixed internal routing, some default organisation and other minor things
NOTE Regarding the spectral environment node:
Cycles can handle wavelength data renders in float, but is NOT an unbiased full spectral renderer. Meaning that the wavelengths calculated here are only 9 separate value spikes in the full spectrum (like laser). A true blackbody emission would mean a full spectral emission with infinite/interpolated frequencies! For that a mathematical algorithm like full, unbiased MLT would be needed. This is the theory.
Now to the practice ;-): You won't make the difference to a luxrender, even if the wavelengths are NOT interpolated, IF you set your scene CORRECTLY! Also it is WAY faster than an unbiased rendering! (but a little bit slower than normal (0.9x to 0.6x)
Volumetrics are due to actual node limitations on hold. 2.7 is coming!
Added spectral based dispersion in nanometer from NearInfrared to NearUltraviolet. From 730nm to 410nm. Dispersion is separated internal by All shaders socket. Maximum GPU speed. Has its own socket with organised nodes! Plug and play!
Added Wavelength based Emission and mixable with the normal emission color.
Note: Always use at least 0.001 Dispersion Roughness! Light refracts always with little roughness (aberration) ! Else you will have some black corners depending on the geometry > no energy transport to the infinite small edges !
Also the wavelength settings are in nanometer (ex. 450), NOT 0 to 1! Simply enter the nm that are written in each setting (Green 530nm) I put range limits for each color(+/-10nm) for not going beyond the spectral limits bumping into each other with the mouse, but you can numerically making things like real thermal/IR renderings, etc...
UPDATE! Up to 300% faster depending on shader!
Internally rerouted for direct output of each shader and combinations
Added Output sockets for separate FAST GPU computing: Diffuse, Diffuse+Glossy,Translucency,Transluc+Glossy, Refraction (incl Glass option), Refraction+Glossy, SSS+ Glossy, SSS, Velvet, Velvet+Glossy, Hair (incl. Fresnel), Emission, Emission+Glossy and the SSS Displacement & Displacement passtrough.
Now it runs at MAX GPU speed due to direct separate sockets.
Heavily modified Ubershader, this is the universal shader FULLY on GPU.
Added SSSgpu solution from blazraidr
Added Velvet shader with additional Fresnel
Added Hair shader with complete I/Os and additional Fresnel
Added Translucency shader
Added Displacement Passtrough (for easier workflow)
Reorganised colors and internal grouping
Renamed each MAIN node input for easier reading.
Kept energy balance across all shaders
Kept computation holdout if a shader is not used.
SSS works with front scattering also. Don't forget, if you forget the SSS contrast value, press simply e.
Always begin with the default values. (-3.000, 8.000 and e=2.718) and tweak from there.
I changed the SSS branch mix too, so energy conservation should remain correct.
UPDATE: I will later try to do add a pure volumetrics shading for atmosphere and water. Still if someone wants to add it, you're welcome :-).
The SSS has already its own SSS Color and Bump inputs, so it's logical to set the main difusse to 0 !
PS: Please give feedback and suggestions so that i can improve it more!