Transparency of GH objects is ...not transparent

Using the custom preview, I’d like to control transparency of objects to see, in this case, a boolean intersection which I purposely display opaque with a flashy color.

But the transparency is kind of shitty and hides the opaque object.
Could that be improved ?

Also, is there a component somewhre that allows me to display GH objects with Rhino display modes ?
Perhaps if I can make the parent objects display as wireframes, I’ll get to see my intersection properly.

Have you tried looking at it in Ghosted?

it looks like the order of the way you connect them is important… bug?

order.gh (10.3 KB)

edit: what’s even more weird: you can select the custom preview you want to be in the background and cut/paste it on the canvas to change the display order

The order does matter, its not a bug. In an OpenGL like drawing pipeline, transparent objects must be drawn back to front. This is because the depth buffer cannot possibly deal with transparency as a concept. A pixel belonging to an object is drawn only when it’s closer to the camera than whatever was drawn there before. If whatever was drawn before was closer, the new pixel is considered to be occluded and is not drawn.

In other words, you cannot draw stuff behind other stuff, only in front of other stuff. This is why Rhino, when it must draw transparent objects, always sorts all shapes back to front prior to drawing them. This can be done because all shapes exist in the same document and thus can be sorted as a single list. However the shapes that grasshopper draws are all stored in different lists (one per parameter). This is why I don’t even bother trying to sort the individual lists, it would at best solve only a very small part of the problem.

One possible improvement is to first draw all opaque objects, and only then draw all transparent objects. It will limit the erroneous occlusion to between transparent objects only. This is something that may be added to grasshopper 2.0

1 Like

This has to be super-stressful on the system when orbiting around a model : Rhino keeps shuffling the objects list…
Given the power of recent “RTX” graphics cards, I wonder if it some kind of basic raytracing display mode could mimic an Open GL display mode, but without all the fuss and work-arounds, while still performing super-fluently…

I tried the V-Ray interactive display with my RTX 2070, and I was surprised to see that it rendered the GH objects AND the curve objects / BREP edges, although they get completely hidden when “behind” meshes, even with a transparent shader.

Well it only has to sort the display order. Not the actual object data in memory.

Maaaaybe the best of the best of modern graphics cards could run a full screen viewport raytrace process at 30-60fps, but I wouldn’t like to have to rely on that.

Ultimately, way in the future, it is likely that display is indeed based on raytracing and path-tracing and light-transport and probably even analytic surfaces instead of shading meshes, but the past 30 years of graphics optimisations have all pretty much focused on meshes and depth-buffers so we’re stuck with that for the time being.

This is today…
"NVIDIA Marbles at Night RTX is a fully playable physics-based game. It is entirely ray traced with NVIDIA DLSS integrated.

It is powered by NVIDIA’s Omniverse and showcases photorealistic real-time graphics.

This playable demo has hundreds of dynamic ray-traced lights and over one hundred million polygons, running smoothly at 1440p on a single GeForce RTX 3090."

1440p is very impressive. But I have two 5k screens, and I sort of like it when my fans aren’t running full-on all the time. We’re definitely getting there, and maybe in 10~20 years most of our customers will have the hardware to be able to run such a display pipeline. We of course already have real time cycles as a display mode, so at least we’re out of the starting blocks.

1 Like

My suggestion was to create a watered-down version of that, trading realism for faster ray-tracing.
And if you don’t like the noise, use a de-noiser (opportunistic pun here) !
I was amazed at the improvement you can get with those de-noising passes in V-ray, and I imagine that some kind of real-time ray-tracing + de-noising could be possible if one doesn’t care about realistic reflections, complex shaders, etc…

Again, the target is just to get the aspect of a slightly better shaded mode with transparency being put out of it’s present misery.

@DavidRutten thanks for the explanations!

Could you give us the specs. of your setup ; screens, desktop ?

Let me guess : it has to be a mac because you need to test both Win and Mac versions.
The latest Mac pro perhaps, and two Pro Display XDR
Close ?
No answer counts as “yes” :slight_smile:

In the mean time, could we at least have dots and sprites to display on top of everything, even in modes with transparency ?

This is a big bummer because we rely a lot on these annotation objects to find and check things out in our complex models, but at the same time, we like a mild transparency to see the innards of our assemblies.

Dots on top of everything would be nice…

1 Like

I just realized that symbols didn’t show on top contrary to what I thought…

I wish there was “always on top” boolean input for this.