I had originally wanted to use a shader to create a pool of clouds and stand the performers in it with the clouds lapping around their feet or legs. However, my initial efforts were not very satisfactory and I began to experiment leading to this set of experiments. There are currently four series of experiments using clouds A - An attempt to stand a performer in a cloud. B - In which a performer is enveloped in smoke. C - Outside scenes featuring fog or mist. These are all based on the FSS, Fast Adaptive Stationary Sampling, shader by Huw Bowles which I had downloaded ShaderToy.com site. In its original form it created a low moving cloud bank and had the advantage of being fast while realistic cloud shaders are often very slow. ---------------------------------------------------------------------- The A1 series represent my original attempts to have a performer stand in a cloud but the results are not statifactory. The idea was to use a cloud shader twice, once at the top part of the screen to provide the background clouds and a second time in at the bottom of the screen to provide the foreground clouds. This had worked well enough, though not perfectly, when used with water rather than clouds, see "Hombre Sin Sombra = Scenes - Seascape - 04", but it leaves a sharp straight line between the performer and the foreground which while barely acceptable with water just does not work with clouds. The best that can be done is to place the performer at the very bottom of the screen so there are no clouds in the foreground, or else to use some sort of platform with a thin supporting leg so that the straight line is very short. The A2 shader is a minor modification of the A1 shader in which the clouds are gradualy suppressed as they near the nominal position of the performer. This looks somewhat better than just standing her on the moving clouds, but is not really convincing. The A3 series of scenes are a variation of the A1 series where instead of using the same shader to generate both foreground and background a modified version is used for the foreground. The clouds generated by the foreground shader are now gradualy faded in as they decend the screen. This eliminates the hard line seen in the A1 scenes replacing them with a transition zone of misty clouds. It is not perfect, if you look closely you can see that in the transition zone the performer is slightly transparent, but the effect is almost satisfactory and it is improved somewhat by making the foreground clouds differ from those in the background by flipping and stretching them. ---------------------------------------------------------------------- Because the A1 series did not lead to satisfactory results this shader was used in a different manner to that initialy envisaged and this led to the B series in which the shader is used in a different manner. In this series a shader is used to generate the background and the same shader is used to render the clip itself together with the foreground smoke. The shader differs from that used for the A1 series by merging its output with image provided by its input texture (which may be nothing, a background image or a clip) rather than just overwriting it. As a result of a initial error when correcting the orientation of the input image the clouds of original shader became clouds of smoke. This was an accident, but I liked the effect. The results are quite satisfying, adding either a touch of romantic mystery or increased steamyness to a simple scene or, perhaps, just obscuring the details depending on your point of view. The B shaders can be tweaked by means of a set of tailoring parameters declared near the start of each .fsh file allowing you to adjust them to your particular preferences. It is possible to add foreground elements in front of the smoke, but there appears to be a small bug in the VGHD software - see the note at the end of this file. ---------------------------------------------------------------------- The C series are similar to the B series but include background images of outdoor scenes, so the smoke is now interpreted as fog. In these scenes the shaders have been slightly modified to detect when a pixel in the input image is transparent, in particular those that surround the performer in a clip, and not to operate on them. If this is not done then clip shows up as a black box against any background that is used. With the B series this did not matter because the only background was generated by the same shader operating on a plain quad, but in the C series the background shader now operates on a background image. This works quite well, but the results do not always look as good as the equivalent scenes without any background. Some tweaking may help. ---------------------------------------------------------------------- When these scenes and shaders were first developed there was no way to pass parameters from the scene file to a shader so almost every scene had its own shader which differed from those for related scenes only by the values of parameters defined by #define statements. Once it was possible to pass the values from the scene file this was done and the number of shaders reduced. However, it has been noticed that when this is done there are often some initial glitches in the scene, but these disappear after about a second. In addition to the initial glitches it was found that attempting to pass more parameters, those controlling the "cloud wave", caused a dark box to appear around the performer. Because of this the shaders are not as fully configurable from the scene file as I would like. I have no idea why these problems exist. They may be due to faults or limitations in the VGHD software or in my system's graphics drivers. It should be possible to unify the Smoke and Fog shaders, but due to the above problems I have not attempted to do so. ---------------------------------------------------------------------- A note regarding the use of foreground elements. It is possible to use images as foreground elements in these scenes, but the results of this have been poor. When such an element is used then it discolours the smoke provided by the background shader but has no affect on that provided by the performers shader. The result is the performer being surrounded by an ugly moving black box. I do not know the cause of this, but I rather suspect a bug in the VGHD program. As the discolouration seems to match the foreground it is possible that some color variable is not being properly initialised and is picking up an icorrect initial value from the foreground image. This problem was seen in version 1.2.0.60 of the VGHD software, it may be fixed in later versions. The theory of an improperly initialised colour variable is to blame is supported by the two scenes B1 - Smoke+Foreground - Buggy and B1 - Smoke+Foreground - Fixed which differ from B1 - Light Smoke only by the addition of foregound elements. In the "buggy" example the problem is seen with the red colour of the chairs polluting the smoke, but in the "fixed" example the addition of a second fully transparent foregound element fixes the problem. Comments in these .scn files give more detail of the problem and the work around. ----------------------------------------------------------------------