After the release of lightweight render pipeline, I’ve looked at tutorial videos on how to create a dissolve shader using PBR graph. Specifically I followed Brackey’s instructional video and a few others that use similar methods.
What I’ve been having trouble with is applying the dissolve method to a transparent object. All of the tutorial videos have the object surface as opaque and attach noise directly to the alpha channel. I understand the process.
However I want my object to be transparent and then start to dissolve. When I attach the noise directly to the alpha channel, as expected, the texture is affected by the noise channel.
Normally I want the texture to look something like this
I was wondering how I could go about having a transparent material dissolve without changing its original texture. I know it’s not that big of an issue and I could simply go back to using opaque, but I’d rather know for future reference
So, some further explanation since my first post was a bit terse.
I believe the alpha clip threshold only works with opaque shader graphs, which is why you’re not seeing anything when you’re using a transparent master node. Alpha clip, aka alpha testing, works by doing a test against a value and if it’s below the threshold those pixels are hidden. The value tested against used to be the alpha output of the shader, hence “alpha test” but that’s not been the case for the last decade plus and the value can be anything you want. However for simplicity most node based shader systems still use the output alpha of the graph.
The issue with doing both transparency and alpha testing is the alpha is already being used for the opacity of the transparency, so if you want some amount of transparency, either fixed or texture based, and you want a dissolve, you need to handle “the test” separately from the alpha. You can do this in a few ways. The easiest way would be to use a comparison node with the noise value and threshold and use the output to multiply the alpha.
Yes I soon realized why the texture was being “overlayed” by noise once I started using a transparent obejct.
I think the technique you’ve given me just might work and I’ll try it out. I’ve tried many different techniques by simply trying to play around with it, even though I have limited knowledge. At first I tried using a branch that selected between the noise and the alpha value based on whether the “dissolve” effect had started, i.e I used a comparison to test whether the remapped sine time was at it’s max, if it was at max the comparison output a 1 and if it wasn’t the comparison put out a 0. This output served as the predicate input to the comparison which let me determine whether to use the straight alpha transparency or use the noise channel as the alpha.
Just for reference, a discrepancy arose in my case because remapping the sine to go in between 0 and 1 never actually causes an output of 0 or 1 and most of it is interpolated, so using comparison for testing “equals” never worked. I had to estimate by using “greater than” a value of, lets say, .95 to indicate when sine had reached its max.
The problem with this is at the moment the comparison switches, the noise channel is applied and you could still tell there was an abrupt change in the texture even though the dissolve had begun to take place.
I’ll try using your method and see how it turns out