I'm trying to implement a simple Phong shader that supports non-physically-based materials and textures. Even though the material has a texture for each light component I still want the respective material coefficient to have some effect. My doubt is how to handle both of them. Should I mix, multiply or sum them? Right now I've multiplied them:

ambient  = material.ambient_color  * light.ambient  * texture_ambient;
diffuse  = material.diffuse_color  * light.diffuse  * diffuse_strength  * texture_diffuse;
specular = material.specular_color * light.specular * specular_strength * texture_specular;

It seems kinda dark, is this the correct way to combine material coefficients and textures?

  • that is the correct way. maybe darkness comes from not doing calculations in linear space? – Sebastián Mestre Jan 28 at 20:42
  • Have you tried increasing the light amounts? – user1118321 Jan 28 at 21:24
  • @SebastiánMestre What do you mean by linear space? I'm sorry, I'm new to this. – Daniel Marques Jan 28 at 23:42
  • @user1118321 No, I've been using only one light, a directional light. In my mind it should be enough and it shouldn't be as dark as it is. – Daniel Marques Jan 28 at 23:43
  • i mean linear colour space. images are usually gamma compressed and can give wrong results when using them in shading. they should first be gamma corrected. you can search what that means online. – Sebastián Mestre Jan 29 at 0:18

When applying various types of attenuation you are just multiplying by some number smaller than 1. This is akin to every atom of your material having some probability of absorbing the light that hits it.

Something to note is that these calculations should be performed ( in the context of gamma correction and colour spaces ) in a linear space.

If you don't perform the calculations in linear space you might end up with overly bright, overly dark, overly saturated or under saturated colours.

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.