Author Topic: Confusion about albedo in color and textures - Keeping consistency  (Read 920 times)

2024-02-08, 19:19:18

lupaz

  • Active Users
  • **
  • Posts: 954
    • View Profile
Hi all,

If a texture has white in it, then I need to darken the whole texture. Right?
But why should I darken the texture that has white in it, together with all the other colors in the texture, and not all other textures in the scene, that don't have such bright colors,  at the same rate?

Here Chaos suggests:
Quote
Each material component is calculated as LEVEL * COLOR (with 255 = albedo 1). So to decrease too high albedo of a white material, you can either:

leave diffuse color at RGB255 and lower diffuse level to about 0,7
or

leave diffuse level at 1 and change color to about RGB180

https://support.chaos.com/hc/en-us/articles/4528323859601-What-is-Albedo

It doesn't specify between just single colors and textures with millions of colors.

Why doesn't the corona material have the level value at 0.7 by default?
Would that be a good strategy to keep realism in ALL materials with and without diffuse textures?

Here CGTricks is sharing a script to automatically control this, but I 'm not sure if I should blindly trust in it. So I wanted to ask the Corona team about all this, including whether the script is a vialble solution for homogeneous Albedo control.
https://forum.corona-renderer.com/index.php?topic=29928.msg172508#msg172508

Thank you!
Guido.

2024-02-08, 19:50:10
Reply #1

James Vella

  • Active Users
  • **
  • Posts: 540
    • View Profile
If the texture looks as you intend it to do then its fine, leave it as it is.

Its only a recommendation, for example when creating Albedo textures from scratch as per the pbr guide (which is well worth a read), the highest values are 240 (white) and lowest is 30 (black). This is a guide for building textures/assets for the pbr pipeline, especially useful if you intend on taking your models/materials into real-time or future proofing etc.

Most people converting scenes from previous projects or vray would be a little angry to say the least if by default it clamped your values to the 'recommended values' since not only would all your previous scenes not match your new ones, it would create lots of tickets for people who are not getting their desired results. This would also be the case for people who switch between different software/render engines like I do and I can easily replicate the same lighting/material values between c4d/3dsmax/blender, vray/corona/cycles since there is less variables to deal with when I know my texture at level 1.0 = the same in another software (which is also the default value for those render engines and software).

There's probably more I could rant on about but these things alone would create a huge problem, not to mention some people have requested they can increase the level beyond 1.0 in Corona, so there is other use cases as well where people want the complete opposite.

If it works for you, then set up a template material or however you build your pipeline and use it. A good use case would be an output node for your bitmaps that does the 'required range' for you every time you import a new bitmap, if that suits you.
« Last Edit: 2024-02-08, 20:03:27 by James Vella »

2024-02-08, 20:11:55
Reply #2

lupaz

  • Active Users
  • **
  • Posts: 954
    • View Profile
There's probably more I could rant on about but these things alone would create a huge problem, not to mention some people have requested they can increase the level beyond 1.0 in Corona, so there is other use cases as well where people want the complete opposite.

That was me too! LOL.
I still think it would be useful.

So in other words, here is where the art vs science limit is. If it looks good, it's good.
I'll do some thorough testing and see what looks best on a certain scene I guess.

Thanks James.

2024-02-08, 20:39:38
Reply #3

James Vella

  • Active Users
  • **
  • Posts: 540
    • View Profile
That was me too! LOL.
I still think it would be useful.

lol so you want a default of 0.7 and a +1.0, you sir are the dev's nightmare :D

So in other words, here is where the art vs science limit is. If it looks good, it's good.
I'll do some thorough testing and see what looks best on a certain scene I guess.

Kinda... my point is we already have standards, lots of those things change slightly over time keeping things at a somewhat base level (1.0) keeps things consistent, which I think you mentioned 'consistency' in your subject heading as a priority.

So for example a 'recommendation' would be use 0.7 level IF your textures are already hitting 255 white AND you want to achieve "this effect"... That's a lot of IFs and ANDs (so, very specific to a users workflow). This also assumes ALL the textures you are using do not conform to any current standard, so some legacy standard. So if you clamp your white values to the 'recommendation' your image should not change much but the output of where its used will benefit from this clamped value (the output could be a real-time engine, some particular look you are going for, some company recommendation as they might have other use cases where the value needs to be clamped).

Like I said, I could rant on a lot about this topic since I've been delving deep into materials and stuff for the last few years and changing defaults like that would be an absolute nightmare to deal with since there's a few factors involved.
1. Current standards work with other software (important!)
2. Users can easily create pipelines that work best for them and their team based on particular values and nodes
3. Legacy standards are easy to interpret and conform to new standards. Since 1.0 = 100%, I dont need to interpret new values with a 30% offset JUST for Corona. This also relates to point 1.
4. My point about IFs and ANDS earlier - Keep in mind since workflows do change over time that also means that lots of artists are in the progress of updating or creating new content that already coheres to the PBR standard (turbosquid/cgtrader/evermotion etc), so if they produce a texture at 30/240 values for you and you clamp the values to 0.7 you are actually reducing the final bitmap texture to 30/168, thus you are losing all the values the artist intended your texture to appear as at 1.0 or 100% and it will be 30% darker than it should be. You should always use a value of 1.0 since this always relates to the current main workflow, and if you need to change it then do so knowing that this can bite you in the future as standards are updated.

Point 4 is really driving the point home about why 1.0 is standard, but feel free to discuss why you think otherwise. I'm keen on other peoples opinions since the bubble I live in often needs a good poking.

« Last Edit: 2024-02-08, 20:59:23 by James Vella »

2024-02-08, 21:07:11
Reply #4

lupaz

  • Active Users
  • **
  • Posts: 954
    • View Profile
when creating Albedo textures from scratch as per the pbr guide (which is well worth a read),

I really think I need to take a look at this PBR thingy in more detail.
This was a great suggestion because it seems it'll help me understand how to manage the brightness (and color profiles maybe) of my textures to fit in the new standards.


2024-02-08, 21:22:29
Reply #5

James Vella

  • Active Users
  • **
  • Posts: 540
    • View Profile
FYI that's part 2, read part 1 first. To be honest if you have never read it before its a lot to take in. It took me probably reading both articles 10 times to sink in, plus 3 months solid of building every component from scratch to really get my head into it - I think I might be a slower learner :D You can follow my journey down the rabbit hole here :D (This was before Corona Physical Material)

I'm not sure of your final goal, you should be more specific of exactly your workflow and outcome. For example "I want to make photo-real images using Corona, and I dont need to export to other formats or other software, ill stay in 3dsmax". More specifics the better since while the pbr guide is useful, and literally any information helps in the long run (ive found) it might not solve your initial question. That may extend to Vantage in future but I don't have a crystal ball to tell me how that works, but I'm sure Ill get around to that too at some point.

I build and sell 3D content, so I want to make sure my customers can use it for vray/corona/blender/c4d/real-time. I also have different ambitions to when I was an archviz artist since I now also build automation scripts for 3dsmax users and understanding the nuance is useful. It all depends on your goals and what you need. If you are more specific as to why you need these things then I and others here can offer you other solutions that may be of more benefit to you since I found usually I dont need to know stuff until I need to know stuff, then it makes an impact and ill remember it.

PBR might not be entirely useful for your end goal, I mean its certainly worth knowing as a 3D artist but its all about priority in my opinion.

edit:
I would say at least the basics of PBR are useful, such as knowing how to plug in each texture to the right material slot with the correct gamma settings at a minimum.
« Last Edit: 2024-02-08, 21:41:25 by James Vella »

2024-02-08, 21:27:47
Reply #6

TomG

  • Administrator
  • Active Users
  • *****
  • Posts: 5468
    • View Profile
Too high an albedo value can affect render times too, so there is a bit more to it than the artistic look. You can use the albedo render pass to detect any problems (it will show you areas where the albedo is too high AFTER the texture has been multiplied by the Level). Hope this helps :)
Tom Grimes | chaos-corona.com
Product Manager | contact us

2024-02-09, 20:06:29
Reply #7

lupaz

  • Active Users
  • **
  • Posts: 954
    • View Profile
Too high an albedo value can affect render times too, so there is a bit more to it than the artistic look. You can use the albedo render pass to detect any problems (it will show you areas where the albedo is too high AFTER the texture has been multiplied by the Level). Hope this helps :)

Hi Tom,
Thank you.
I don't think you understood the topic though.
I can rephrase it if needed.

2024-02-10, 02:00:13
Reply #8

dj_buckley

  • Active Users
  • **
  • Posts: 875
    • View Profile
If a texture has white in it, then I need to darken the whole texture. Right?
But why should I darken the texture that has white in it, together with all the other colors in the texture, and not all other textures in the scene, that don't have such bright colors,  at the same rate?

This is a mine field. 


"But why should I darken the texture that has white in it, together with all the other colors in the texture"

If a texture contains white as a value of 255,255,255 then it's just wrong and all of the other colours in that texture are likely to be the wrong values relative to the white.  But simply put white whites at 255,255,255 is wrong.  So it's easy for these 'guides' to highlight that.  Same with black, although I personally think that black PBR standard of "30-50" is also wrong.  But I'm no expert.  Far from it in fact so who am I to say.  So take the rest of what I say with a pinch of salt.

Check out Martins article here for more info on 'blacks' - https://www.racoon-artworks.de/blog_PBRfromrulestomeasurements.php


"and not all other textures in the scene, that don't have such bright colors"

As far as the 'other textures' go that are full of mid-range values, who knows.  That's for you to decide (or verify).


"At the same rate"

Not all textures are made equal, I'm assuming you grab textures from various different sources and each creator will have their own workflows and processes to capture said textures, who knows if they're all done to the same "standards" or any standards at all.  So you might have two textures from two different sources and they might both be wrong.  But they might not both be wrong to the same degree relative to each other, if that makes sense.


In my opinion, following a 'strict' PBR workflow is only really possible if you're creating all of your own assets from scratch.  Failing that, ideally you should be checking and correcting each and every texture to get all of your textures from all of your different sources as consistent as possible in terms of the 'correct' values.

Wanna know what I do ... make sure there are no white whites and no black blacks, then eyeball the rest.  As already mentioned, if it looks right, it is right.  When I'm creating a material, I tend to have real world references up on screen, of that material under the same or very similar lighting conditions as the lighting in my 3D scene.  I then get the overall shader looking roughly correct in terms of reflection/roughness/bump etc (I often do this with no albedo texture, just a mid desaturated red colour), and then add the albedo to the mix and tweak using CoronaColorCorrect nodes (brightness, saturation, hue) until my scene and the reference look pretty close.  Once they're pretty close then I'm happy.

I do use the Albedo render pass element as Tom suggested to check my scenes just before rendering, and if anything is red, then I consider it 'out of range', and so I tend to fire up IR and drop the diffuse level on that objects material until it's no longer red in the albedo render element and back 'in range'.  I only do this for small things though where you wouldn't really notice if their textures are really the 'correct' values or not.  And for some reason it always seems to be book covers and artwork that need fixing :)

Jumping back to strict PBR stuff - "In Range" and "Correct" are two very different things.

Hope it helps (assuming what I've written isn't absolute nonsense).


2024-02-12, 13:03:23
Reply #9

TomG

  • Administrator
  • Active Users
  • *****
  • Posts: 5468
    • View Profile
Too high an albedo value can affect render times too, so there is a bit more to it than the artistic look. You can use the albedo render pass to detect any problems (it will show you areas where the albedo is too high AFTER the texture has been multiplied by the Level). Hope this helps :)

Hi Tom,
Thank you.
I don't think you understood the topic though.
I can rephrase it if needed.

My comment was added simply in response to "if it looks ok, it is ok" response rather than to the original question :) This is true visually, but just wanted to add that you may experience poor render times even if it "looks ok" if things are out of range. Depends on whether render times are a concern for you, or not.
Tom Grimes | chaos-corona.com
Product Manager | contact us

2024-02-12, 14:34:54
Reply #10

maru

  • Corona Team
  • Active Users
  • ****
  • Posts: 12768
  • Marcin
    • View Profile
If you would take a device in real life which could measure a material's "whiteness", you would hardly ever see values above ~0.7 even when sampling the whitest sheets of white paper or paint. In Corona, we want to replicate reality, so we try to model our scenes with physically-plausible materials.

If you would like to replicate in 3D a interior which in reality is fully covered with white paint, giving it a diffuse color value of RGB 255 would result in extremely slow rendering and unrealistic "glowing" appearance. To fix that, you need to lower your diffuse level to ~0.7.

At the same time, if you just place some small object on a shelf and give it a material with RGB 255 color, that won't be a problem, even if such a material is very unlikely to appear in real life.

Why can't we just "clamp" the brightest parts of textures or make whole textures generally darker? Because of what James said (in Corona it would be working different than in other apps), and also because you would lose the expected appearance of your textures. For example, if your texture is a gradient from black to white, you expect it to be from black to white and having some kind of transition curve. If we would clamp it, that transition would be changed.

Btw there were similar discussions in the past: https://forum.corona-renderer.com/index.php?topic=2359.0
Marcin Miodek | chaos-corona.com
3D Support Team Lead - Corona | contact us

2024-02-12, 19:29:17
Reply #11

lupaz

  • Active Users
  • **
  • Posts: 954
    • View Profile