Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #version 330
- uniform sampler2D cloudTexture;
- uniform sampler2D perlinNoise;
- uniform vec4 cloudColour1;
- uniform vec4 cloudColour2;
- uniform vec4 cloudColour3;
- uniform vec4 cloudColour4;
- // Must match the names in compoundClouds.vs
- in vec2 oUV0;
- out vec4 color;
- void main()
- {
- vec4 concentrations = texture2D(cloudTexture, oUV0);
- // Calculate all channels
- float alpha1 = concentrations.r * texture2D(perlinNoise, oUV0 * 1.5f + 0.0f).x * 0.90f;
- float alpha2 = concentrations.g * texture2D(perlinNoise, oUV0 * 1.5f + 0.2f).x * 0.90f;
- float alpha3 = concentrations.b * texture2D(perlinNoise, oUV0 * 1.5f + 0.04f).x * 0.90f;
- float alpha4 = concentrations.a * texture2D(perlinNoise, oUV0 * 1.5f + 0.6f).x * 0.90f;
- float totalAlpha = alpha1 + alpha2 + alpha3 + alpha4;
- // Adjust the alpha to get better looking blend
- alpha1 *= alpha1 / totalAlpha;
- alpha2 *= alpha2 / totalAlpha;
- alpha3 *= alpha3 / totalAlpha;
- alpha4 *= alpha4 / totalAlpha;
- // Then mix them all together
- color =
- // first
- cloudColour1 * alpha1 +
- // second
- cloudColour2 * alpha2 +
- // third
- cloudColour3 * alpha3 +
- // fourth
- cloudColour4 * alpha4;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement