User Tools

Site Tools


specular_lys

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
specular_lys [2017/05/15 16:54]
adavies [Image Based Lighting Sample Shader]
specular_lys [2017/05/23 03:49] (current)
Line 49: Line 49:
 ==== Image Based Lighting Sample Shader ==== ==== Image Based Lighting Sample Shader ====
  
-In the following we describe how to use cube maps generated with Lys in a shader for image based lighting. We also provide a free, complete IBL sample shader, the associated source files for the shader and a general user guide in that you may test the various aspects of IBL with a minimal setup and iteration time.+In the following we describe how to use cube maps generated with Lys in a shader for image based lighting. We also provide a free, complete IBL sample shader ​associated source files.
  
 Please see the [[ibl_sample_shader_lys|Image Based Lighting Sample Shader]] page for more details. Please see the [[ibl_sample_shader_lys|Image Based Lighting Sample Shader]] page for more details.
Line 132: Line 132:
  
 Note that our implementation of BurleyToMip() below differs from the more typical form as cube maps convolved in Lys are based on RdotL and not NdotH. You can find a more detailed description in [[specular_lys#​pre-convolved_cube_maps_vs_path_tracers|Pre-convolved Cube Maps vs Path Tracers]]. Note that our implementation of BurleyToMip() below differs from the more typical form as cube maps convolved in Lys are based on RdotL and not NdotH. You can find a more detailed description in [[specular_lys#​pre-convolved_cube_maps_vs_path_tracers|Pre-convolved Cube Maps vs Path Tracers]].
 +
 +Despite the difference in distribution of MIPs the lit specular response resulting from the “roughness texture” will be identical to existing PBR based game engines and tools.
  
 <code glsl>​float BurleyToMip(float fPerceptualRoughness,​ int nMips, float NdotR) <code glsl>​float BurleyToMip(float fPerceptualRoughness,​ int nMips, float NdotR)
Line 255: Line 257:
 [{{https://​s3.amazonaws.com/​docs.knaldtech.com/​docuwiki/​reflected_beam_new.png?​nolink&​1075 |The view direction v reflected by dH will result in dR. Given the existing symmetry the central direction r of dR will result in dV when reflected by dH.}}] [{{https://​s3.amazonaws.com/​docs.knaldtech.com/​docuwiki/​reflected_beam_new.png?​nolink&​1075 |The view direction v reflected by dH will result in dR. Given the existing symmetry the central direction r of dR will result in dV when reflected by dH.}}]
  
 +\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ 
  
- +\\ \\ As an approximation we can correlate size of solid angle with "blur strength"​and replace ''​h_dot_r''​ with ''​n_dot_r''​. So ultimately what we do is adjust our specular power in the following way:
-\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ +
- +
-As an approximation we can correlate size of solid angle with "blur strength"​and replace ''​h_dot_r''​ with ''​n_dot_r''​. So ultimately what we do is adjust our specular power in the following way:+
  
 <code glsl>​fSpecPow /= (4*max(dot(vN,​ vR), FLT_EPSILON));</​code>​ <code glsl>​fSpecPow /= (4*max(dot(vN,​ vR), FLT_EPSILON));</​code>​
- 
- 
- 
  
 This works because the specular power is roughly inversely proportional to the amount of blur. This works because the specular power is roughly inversely proportional to the amount of blur.
- 
- 
  
 Note we perform this correction inside the functions GetSpecPowToMip() and BurleyToMip() given above. This adjustment is of course just for the cube maps and should NOT be applied to the specular power used with ordinary lights since for these we simply use an n_dot_h based formulation as opposed to l_dot_r. Note we perform this correction inside the functions GetSpecPowToMip() and BurleyToMip() given above. This adjustment is of course just for the cube maps and should NOT be applied to the specular power used with ordinary lights since for these we simply use an n_dot_h based formulation as opposed to l_dot_r.
specular_lys.1494867254.txt.gz · Last modified: 2017/05/23 03:49 (external edit)