X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=shaderlib%2Fcooktorrance.glsl;h=71f8ec76c8df64046cd3a2a70e46742b5f23aa87;hp=f8aed8267273fcb4f1ac97c929e3823ba29dbcb0;hb=6b9338845dfee441cd18ad6c633e4feef8ad14e1;hpb=87b74b1263710b0acb9e0b72283e972fd54ee91b diff --git a/shaderlib/cooktorrance.glsl b/shaderlib/cooktorrance.glsl index f8aed826..71f8ec76 100644 --- a/shaderlib/cooktorrance.glsl +++ b/shaderlib/cooktorrance.glsl @@ -28,6 +28,7 @@ layout(constant_id=auto) const bool use_roughness_map = false; layout(constant_id=auto) const bool use_occlusion_map = false; layout(constant_id=auto) const bool use_emission = false; layout(constant_id=auto) const bool use_emission_map = false; +layout(constant_id=auto) const bool use_image_based_lighting = false; const float PI = 3.1415926535; @@ -139,7 +140,15 @@ vec3 cooktorrance_environment(vec3 normal, vec3 look, vec3 base_color, float met vec3 k_spec = f0*scale_bias.x+scale_bias.y; vec3 k_diff = (1.0-k_spec)*(1.0-metalness); - return (k_diff*base_color+k_spec)*ambient_color.rgb; + if(use_image_based_lighting) + { + vec3 irradiance = get_irradiance_sample(normal); + vec3 reflection = get_environment_sample(reflect(look, normal), roughness).rgb; + + return k_diff*irradiance*base_color+k_spec*reflection; + } + else + return (k_diff*base_color+k_spec)*ambient_color.rgb; } vec3 cooktorrance_lighting(vec3 normal, vec3 look, vec3 base_color, float metalness, float roughness)