Wish: Displaymode shadow density, not only color

No if you use multiply as a blending mode, which is what I think @Jarek was trying to explain, that shadows should always make the object darker no matter what color the shadow is.

When I learnt to paint, I was told that shadows are not a specific color but the color of the surrounding and also that shadows are always darker than the original surface. With these two basic principles you can realistically paint any shadow. So for example, if we have green grass on a sunny blue day, what color is the cast shadow on that grass. In this case the shadow should be a mixture between green and blue and always darker than the original green of that grass. How much blue should we use? well that’s what I think @Holo and @Jarek are referring as density here. How much of that blue you want to see on that grass but always making it darker.

1 Like

Hi @jeff,

Ok, I gave it some more thought and digging. The ultimate goal did not change for shadow intensity, but maybe I was wrong how to get there, not understanding how Rhino display pipeline is handling applying the shadows pass in the viewport. If we were offered only black shadows, then obviously just applying the shadow map in Multiply mode with some opacity would be enough, but with color shadows it gets a bit more tricky.

  1. This is the scene with No Shadows:

  1. Same scene with 100% black shadow (Skylight + Cast)

  1. Same scene with Cyan-colored shadow (Skylight + Cast)

  1. Regardless of shadow color setting, the Shadow Map (obtained by TestShowShadowMap) always is a grayscale map:

Which leads me to believe that somehow the ShadowMap is used as an Alpha Mask for the Shadow Color that is applied on top of the display, in Normal Mode (no fancy blending modes here)

  1. So if we take inverted Shadow Map:


… and use it as information of how much of the Shadow Color (Black, Cyan, whatever) gets applied on top of the No-Shadow image (the more white, the more opacity of the Shadow Color), We ca reproduce what Rhino currently does:

  1. Full Cyan Color with Inverted Shadow Map as Alpha Mask over No-Shadow image:

  2. Full Black Color with Inverted Shadow Map as Alpha Mask over No-Shadow image:

  3. So in this case, changing the brightness of the Alpha Mask would control the fabled Shadow Intensity.
    Here is how it roughly works:

And the Photoshop file: RhinoShadows.zip (2.3 MB)


Now, this is somewhat confirmed by the “Sun Shadow Intensity” hack script mentioned above. We are exporting Sun Settings to .rsun file, and messing with this setting before reimporting it (script automates it):

for the intensity below 1, TestShowShadowMap just gets brighter (note only Cast Shadows - Skylight is not affected - must be not implemented in Rhino yet):

Here is the script to test: SetSunShadowIntensity.rvb (2.1 KB)

Whew…

In conclusion, the desired effect is just “less” shadow, whatever color we chose it is.
As if we took the first “No Shadow” image in Photoshop, put the one With Shadow on top of it, and just control the top layer transparency…

From the above maybe under the hood it is playing with the brightness of the Shadow Map pass shown by TestShowShadowMap. I don’t know. But I hope this explains it a bit better and may give you some idea what we are after and how to implement this…

–jarek

1 Like

hi José, that’s how I thought it works since I almost never touch Shadow color in Rhino, but with the option of any shadow color the Multiply mode will not cut it. The implementation in Rhino must be a bit different. Maybe the above helps. Intuitively I thought this is pretty straight-forward request but clearly there is more to it.

1 Like

Hi Jarek,

Yes, your post clearly proofs that Rhino is not applying the shadow past in multiply mode, instead it is using the shadows past as a mask, why? that doesn’t makes any sense to an user like me, with no understanding of programming or any knowledge about how the Rhino graphic engine works.

Why Rhino can’t just apply the shadow past as multiply, even if the shadow is not black. You can easily do that in Photoshop for any color

What is different in Rhino pipeline that this can not be achieved? I hope Jeff can clarify why all of this is happening and hopefully he can find a solution to this limitation and give us the expected results.

Thanks,
José

I think Jeff mentioned for one reason it would be limiting for users going after not realistic effect where brigh color shadow may look like a cool glow. I am all for that, the more customizations available, the better! I just never though much about how it’s done to accommodate all settings and how to approach the “shadow intensity” in the current scenario.
I can see how the non-realistic color shadows can be good for stylized-looking illustrations, but also OPs site plan image shows how black shadows with transparency would play better than just flat med-gray. We are after the shadow Goldilocks condition in Rhino :slight_smile:

I’m also interested in not realistic effect, I think the more flexible the tool the better for everyone. Maybe adding a check box next to the shadow colour indicating realistic and applying multiply mode then? don’t know… IMO the current behaviour is sacrificing to much, I think most users will benefit from the ability to modify the intensity and color of the shadow while still being a shadow, darker than the original.

Also, now that I remember, when Steve Baer announced that transparent hatches were coming to V7 I asked him If he could implement blend modes into hatches, just for the same reason we are talking now, to be able to create 2D shadows easily no matter how colourful your facades are. I made a quick illustration to explain the issue. I think the same applies here but in 3D.

I am all for even more settings and certainly having control over shadows blending mode, on top of transparency, would be very nice, but I would be afraid to ask for too many things at once. Intensity for starters…

Also I am not sure if your study is correct.
If your shadow is 100% black, then if you just make it 70% transparent, it will look the same no matter if you are using Normal or Multiply blending mode. This is only true for 100% black, other colors have different results between these modes:

1 Like

First of all, thank you all for putting so much effort into this topic!
A lot of interesting aspects were high lighted.

First of all, I must say I am with Jarek on this one, but I respect that those who like light pink shadows should be respected!:

So could Rhino have a toggle to choose how to handle the shadows?
Option one would be handel shadows as multiply and the other as overlay.
Both should have color option, but the intensity/opacity slider would affect it slightly differently.

I don’t think we need both options merged into one.

1 Like

I may have been approaching this discussion from the wrong direction…but that’s because I have been assuming that everyone here knows and understands that Rhino already has a “Shadow Intensity” setting… Given that assumption, I was coming at this “request” from a “Shadow Color” perspective, and that what was being asked had to do with modifying the shadow color in some way.

The concept of “shadow intensity” is considered a light property, and therefore, every light object in Rhino has a “Shadow intensity” slider (select a light object and go into Object Properties). This has been in Rhino for as long as I can remember.

That being said, changing a light’s shadow intensity impacts the shadow map, and thus the shadows it creates. So, forgetting about “color” for the moment, I’m assuming that slider gives you what you’re looking for ??? No? Do a simple test… Draw a box, place a directional or spot light so that the box casts a nice shadow onto the ground plane. Select the light, go to Object Properties, and start playing with the “Shadow intensity” slider, and note the changes in the viewport (note: this does work with colored shadows as well, but let’s not go there yet).

Given that, what is still missing?

Note @Jarek: That’s really the setting you keep eluding to with the Sun (which should have made me realize earlier that I was coming at this from the wrong direction, but I was being thick). The Sun UI doesn’t provide such a slider, but internally the Sun is just a Rhino Directional Light object, which contains all the same properties as a normal light, including “Shadow intensity”.

-J

Hi Jeff, thanks - looks like we are getting somewhere with understanding what we are after and what needs some improvement still.

A bit of background info - we use Sun for shadows and as primarily light source (along with Skylight) about 99% of the time. So while I was aware of the additional settings other Rhino lights have, I did not make a connection since we rarely if ever have models with multiple Rhino lights, and not just Sun.
So the request may boil down to fine-tuning a few things that are already in Rhino but not exposed to users in UI. And a possible cherry on top:

  1. After years of asking for it, in WIP we finally got the Sun Intensity setting which is a much needed improvement. That’s great. But we also need the same Shadow Intensity setting for Sun (just like you noted the script does, but with proper UI exposed)

  2. Skylight could also use the same Shadow Intensity setting. In this case I would argue it should be allowed to go past 100% (or 1) - in many cases the skylight shadows are too blown out on bright scenes, so values above 1 could help to remedy that problem

  3. The Lights panel is missing the Shadow Intensity parameter, which makes it less discoverable. Can this be added there, too, instead of having to go and select light-by-light? Sun and Skylight intensity and shadow intensity should be there, too.

  4. Lastly, I think the original wish for “Shadow Intensity” as a global display mode parameter would be handy as well. It will control the total combined shadow map intensity regardless of individual light settings. Kind of global override which is quick to access and gives another layer of control.

Seems like it is all in place in Rhino but not exposed to UI. Hope it can all come together.

–jarek

There is an “Intensity” setting in TestSSAOOptions that does what you’re talking about…and it definitely goes past 1.0 (100%)…in fact, I believe the default is 250% (2.5)… But again, no UI for that specific setting.

-J

1 Like

Indeed! This testcommand is a gem. I don’t understand half of the parameters (just played with all of them) but my undestanding is the quality is connected to Shadow Quality (which hopefully is getting exposed separately from Cast Shadows in V7). So can we expose the “Intensity” of Skylight in Skyligth UI? Cool to have it as test command and I could live with that, but many users will never know it exists.

I may be getting carried away here, but here is another thing that always baffled me a bit with Skylight Shadows : the “Radius”/intensity changes depending on the camera lens - the wider lens, the smaller radius - so if you take the same model with Skylight and do DollyZoom, you will see the radius changes. Obviously this is not a desired effect from the user’s point of view. So now in the testcommand I see you have Radius Multiplier which addresses this exact issue. Did you consider making this parameter “smart” and auto-adjust with lens change so the look is consistent regardless of the lens?
( @DavidEranen in case you are interested in that aspect…)

1 Like

Most likely has to do with changes in the depth buffer… SSAO is very dependent on depth buffer values… Run ShowZBuffer, and then run your camera changes… My guess is that the depth results will vary as well…but that’s just a WAG atm…

-J

1 Like

Can’t tell just by looking at it, I’m sure there is a good reason.
Testing it seems like with higher radius multiplier the effect is more consistent and less dependent on lens length… OK I digress, don’t want to hijack this post. But it’s in the same genre of cool display features not exposed to us mortals… :slight_smile:

1 Like

By all means, carry on! I just wanted to raise the topic that we wish for more shadow control, and not just color. And you guys took this to a new level, so you can turn this thread in any direction you want. Better that it stays active and alive than a silent death :slight_smile:

To me shadow intensity is the most setting a display mode shadow can have since it is important for me to get light shadows with out adding more lights or ambient light to the scene (Mainly since Rhino doesn’t have a viewport exposure… hark hark, hint hint :wink: ). So keeping a scene with few lights is important to acchieve true material colors without over exposure.

2 Likes

Really interesting to see this thread from a user perspective.
When reading @Holo s request, I knew within seconds what he was looking for.
Whoever has used screenshots from Rhino as a quick substitute for a rendering and wanted to tweak the shadow intensity knows that his request is exactly on point.

1 Like

So why don’t the light properties work for you? Is it because that would also impact the final rendering and you really only want the viewport to change?

-J

1 Like

Ya, this was a bad test (sorry)… I map min and max values to 0.0 and 1.0 (black and white) for that command…so seeing any “changes” in depth isn’t going to happen… You really need a way to visualize raw depth values, which I can do here but it’s not something you can currently do on your end.

-J

Here I am after a simple displaymode with default light that ignores the scene lights.

Also the Sun shadows cannot be controlled, :slight_smile: