X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=shaderlib%2Fcooktorrance.glsl;h=4b0c4dc814ca5b16e903d7003f1371b96b3c6503;hb=9208e0ff263a287e456e082a4a8b8fd0bbd41f9e;hp=f8aed8267273fcb4f1ac97c929e3823ba29dbcb0;hpb=e05c77d2e3582a6962f42dcec0fc5f7845ff448d;p=libs%2Fgl.git diff --git a/shaderlib/cooktorrance.glsl b/shaderlib/cooktorrance.glsl index f8aed826..4b0c4dc8 100644 --- a/shaderlib/cooktorrance.glsl +++ b/shaderlib/cooktorrance.glsl @@ -28,8 +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; - -const float PI = 3.1415926535; +layout(constant_id=auto) const bool use_image_based_lighting = false; #pragma MSP stage(fragment) virtual vec4 get_base_color() @@ -139,7 +138,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)