My experience with writing shaders (such as for physically based rendering) is that the shading languages (MSL, GLSL, HLSL) are easy to switch between. The hard part is understanding the physics and understanding how GPUs work internally.
My main approach to writing shaders is to look at existing programs (e.g. Blender) and see what techniques are in use. The Google Filament renderer documentation [0] is also really good when it comes to BDSF functions.
Some papers from Unreal Engine might also help, such as "Real Shading in Unreal Engine 4" [1]
My main approach to writing shaders is to look at existing programs (e.g. Blender) and see what techniques are in use. The Google Filament renderer documentation [0] is also really good when it comes to BDSF functions.
Some papers from Unreal Engine might also help, such as "Real Shading in Unreal Engine 4" [1]
[0] https://google.github.io/filament/Filament.md.html
[1] https://cdn2.unrealengine.com/Resources/files/2013SiggraphPr...