Ok so, I wanted to get a bit more out of my SEUS shader pack and then I stumbled across an 'add-on' if you will that gives you a nice Lens Flare effect from the sun. It's great for screenshots and the likes.
Anyways, here's a short guide on what you need to do to achieve this effect.
First of all, download SEUS v10.1 Preview 2 from here.
Next you want to fire up an instance of NotePad ++ (Download it here if you don't have it).
Ok, once you have Notepad++ installed/open, you need to actually unzip the final.fsh file from the seus-v10.1-preview2.zip. Then you will use Notepad++ for editing some code into it. (Either Right Click the file > Open With > choose Notepad++ as the program to edit it with OR just open it in Notepad++ itself)
Copy these few lines into the areas required:
Copy/Paste into Line #54 (the line numbers should be on the side of the document).
uniform mat4 gbufferProjection;
Copy/Paste into line #69
uniform vec3 sunPosition;
Copy/Paste into line #749
void LensFlare(inout vec3 color) { vec3 tempColor2 = vec3(0.0); float pw = 1.0 / viewWidth; float ph = 1.0 / viewHeight; vec3 sP = sunPosition; vec4 tpos = vec4(sP,1.0)*gbufferProjection; tpos = vec4(tpos.xyz/tpos.w,1.0); vec2 lPos = tpos.xy / tpos.z; lPos = (lPos + 1.0f)/2.0f; //lPos = clamp(lPos, vec2(0.001f), vec2(0.999f)); vec2 checkcoord = lPos; if (checkcoord.x < 1.0f && checkcoord.x > 0.0f && checkcoord.y < 1.0f && checkcoord.y > 0.0f && timeMidnight < 1.0) { vec2 checkcoord; float sunmask = 0.0f; float sunstep = -4.5f; float masksize = 0.004f; for (int a = 0; a < 4; a++) { for(int b = 0; b < 4; b++) { checkcoord = lPos + vec2(pw*a*5.0f,ph*5.0f*b); bool sky = false; float matID = GetMaterialIDs(checkcoord); //Gets texture that has all material IDs stored in it matID = floor(matID * 255.0f); //Scale texture from 0-1 float to 0-255 integer format //Catch last part of sky if (matID > 254.0f) { matID = 0.0f; } if (matID == 0) { sky = true; } else { sky = false; } if (checkcoord.x < 1.0f && checkcoord.x > 0.0f && checkcoord.y < 1.0f && checkcoord.y > 0.0f) { if (sky == true) { sunmask = 1.0f; } else { sunmask = 0.0f; } } } } sunmask *= 0.34 * (1.0f - timeMidnight); sunmask *= (1.0f - rainStrength); if (sunmask > 0.02) { //Detect if sun is on edge of screen float edgemaskx = clamp(distance(lPos.x, 0.5f)*8.0f - 3.0f, 0.0f, 1.0f); float edgemasky = clamp(distance(lPos.y, 0.5f)*8.0f - 3.0f, 0.0f, 1.0f); ////Darken colors if the sun is visible float centermask = 1.0 - clamp(distance(lPos.xy, vec2(0.5f, 0.5f))*2.0, 0.0, 1.0); centermask = pow(centermask, 1.0f); centermask *= sunmask; color.r *= (1.0 - centermask * (1.0f - timeMidnight)); color.g *= (1.0 - centermask * (1.0f - timeMidnight)); color.b *= (1.0 - centermask * (1.0f - timeMidnight)); //Adjust global flare settings const float flaremultR = 0.8f; const float flaremultG = 1.0f; const float flaremultB = 1.5f; float flarescale = 1.0f; const float flarescaleconst = 1.0f; //Flare gets bigger at center of screen //flarescale *= (1.0 - centermask); //Center white flare vec2 flare1scale = vec2(1.7f*flarescale, 1.7f*flarescale); float flare1pow = 12.0f; vec2 flare1pos = vec2(lPos.x*aspectRatio*flare1scale.x, lPos.y*flare1scale.y); float flare1 = distance(flare1pos, vec2(texcoord.s*aspectRatio*flare1scale.x, texcoord.t*flare1scale.y)); flare1 = 0.5 - flare1; flare1 = clamp(flare1, 0.0, 10.0) * clamp(-sP.z, 0.0, 1.0); flare1 *= sunmask; flare1 = pow(flare1, 1.8f); flare1 *= flare1pow; color.r += flare1*0.7f*flaremultR; color.g += flare1*0.4f*flaremultG; color.b += flare1*0.2f*flaremultB; //Center white flare vec2 flare1Bscale = vec2(0.5f*flarescale, 0.5f*flarescale); float flare1Bpow = 6.0f; vec2 flare1Bpos = vec2(lPos.x*aspectRatio*flare1Bscale.x, lPos.y*flare1Bscale.y); float flare1B = distance(flare1Bpos, vec2(texcoord.s*aspectRatio*flare1Bscale.x, texcoord.t*flare1Bscale.y)); flare1B = 0.5 - flare1B; flare1B = clamp(flare1B, 0.0, 10.0) * clamp(-sP.z, 0.0, 1.0); flare1B *= sunmask; flare1B = pow(flare1B, 1.8f); flare1B *= flare1Bpow; color.r += flare1B*0.7f*flaremultR; color.g += flare1B*0.2f*flaremultG; color.b += flare1B*0.0f*flaremultB; //Wide red flare vec2 flare2pos = vec2(lPos.x*aspectRatio*0.2, lPos.y); float flare2 = distance(flare2pos, vec2(texcoord.s*aspectRatio*0.2, texcoord.t)); flare2 = 0.3 - flare2; flare2 = clamp(flare2, 0.0, 10.0) * clamp(-sP.z, 0.0, 1.0); flare2 *= sunmask; flare2 = pow(flare2, 1.8f); color.r += flare2*1.8f*flaremultR; color.g += flare2*0.6f*flaremultG; color.b += flare2*0.0f*flaremultB; //Wide red flare vec2 flare2posB = vec2(lPos.x*aspectRatio*0.2, lPos.y*4.0); float flare2B = distance(flare2posB, vec2(texcoord.s*aspectRatio*0.2, texcoord.t*4.0)); flare2B = 0.3 - flare2B; flare2B = clamp(flare2B, 0.0, 10.0) * clamp(-sP.z, 0.0, 1.0); flare2B *= sunmask; flare2B = pow(flare2B, 1.8f); color.r += flare2B*1.2f*flaremultR; color.g += flare2B*0.5f*flaremultG; color.b += flare2B*0.0f*flaremultB; //Far blue flare MAIN vec2 flare3scale = vec2(2.0f*flarescale, 2.0f*flarescale); float flare3pow = 0.7f; float flare3fill = 10.0f; float flare3offset = -0.5f; vec2 flare3pos = vec2( ((1.0 - lPos.x)*(flare3offset + 1.0) - (flare3offset*0.5)) *aspectRatio*flare3scale.x, ((1.0 - lPos.y)*(flare3offset + 1.0) - (flare3offset*0.5)) *flare3scale.y); float flare3 = distance(flare3pos, vec2(texcoord.s*aspectRatio*flare3scale.x, texcoord.t*flare3scale.y)); flare3 = 0.5 - flare3; flare3 = clamp(flare3*flare3fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare3 = sin(flare3*1.57075); flare3 *= sunmask; flare3 = pow(flare3, 1.1f); flare3 *= flare3pow; //subtract from blue flare vec2 flare3Bscale = vec2(1.4f*flarescale, 1.4f*flarescale); float flare3Bpow = 1.0f; float flare3Bfill = 2.0f; float flare3Boffset = -0.65f; vec2 flare3Bpos = vec2( ((1.0 - lPos.x)*(flare3Boffset + 1.0) - (flare3Boffset*0.5)) *aspectRatio*flare3Bscale.x, ((1.0 - lPos.y)*(flare3Boffset + 1.0) - (flare3Boffset*0.5)) *flare3Bscale.y); float flare3B = distance(flare3Bpos, vec2(texcoord.s*aspectRatio*flare3Bscale.x, texcoord.t*flare3Bscale.y)); flare3B = 0.5 - flare3B; flare3B = clamp(flare3B*flare3Bfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare3B = sin(flare3B*1.57075); flare3B *= sunmask; flare3B = pow(flare3B, 0.9f); flare3B *= flare3Bpow; flare3 = clamp(flare3 - flare3B, 0.0, 10.0); color.r += flare3*0.5f*flaremultR; color.g += flare3*0.3f*flaremultG; color.b += flare3*0.0f*flaremultB; //Far blue flare MAIN 2 vec2 flare3Cscale = vec2(3.2f*flarescale, 3.2f*flarescale); float flare3Cpow = 1.4f; float flare3Cfill = 10.0f; float flare3Coffset = -0.0f; vec2 flare3Cpos = vec2( ((1.0 - lPos.x)*(flare3Coffset + 1.0) - (flare3Coffset*0.5)) *aspectRatio*flare3Cscale.x, ((1.0 - lPos.y)*(flare3Coffset + 1.0) - (flare3Coffset*0.5)) *flare3Cscale.y); float flare3C = distance(flare3Cpos, vec2(texcoord.s*aspectRatio*flare3Cscale.x, texcoord.t*flare3Cscale.y)); flare3C = 0.5 - flare3C; flare3C = clamp(flare3C*flare3Cfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare3C = sin(flare3C*1.57075); flare3C = pow(flare3C, 1.1f); flare3C *= flare3Cpow; //subtract from blue flare vec2 flare3Dscale = vec2(2.1f*flarescale, 2.1f*flarescale); float flare3Dpow = 2.7f; float flare3Dfill = 1.4f; float flare3Doffset = -0.05f; vec2 flare3Dpos = vec2( ((1.0 - lPos.x)*(flare3Doffset + 1.0) - (flare3Doffset*0.5)) *aspectRatio*flare3Dscale.x, ((1.0 - lPos.y)*(flare3Doffset + 1.0) - (flare3Doffset*0.5)) *flare3Dscale.y); float flare3D = distance(flare3Dpos, vec2(texcoord.s*aspectRatio*flare3Dscale.x, texcoord.t*flare3Dscale.y)); flare3D = 0.5 - flare3D; flare3D = clamp(flare3D*flare3Dfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare3D = sin(flare3D*1.57075); flare3D = pow(flare3D, 0.9f); flare3D *= flare3Dpow; flare3C = clamp(flare3C - flare3D, 0.0, 10.0); flare3C *= sunmask; color.r += flare3C*0.5f*flaremultR; color.g += flare3C*0.3f*flaremultG; color.b += flare3C*0.0f*flaremultB; //far small pink flare vec2 flare4scale = vec2(4.5f*flarescale, 4.5f*flarescale); float flare4pow = 0.3f; float flare4fill = 3.0f; float flare4offset = -0.1f; vec2 flare4pos = vec2( ((1.0 - lPos.x)*(flare4offset + 1.0) - (flare4offset*0.5)) *aspectRatio*flare4scale.x, ((1.0 - lPos.y)*(flare4offset + 1.0) - (flare4offset*0.5)) *flare4scale.y); float flare4 = distance(flare4pos, vec2(texcoord.s*aspectRatio*flare4scale.x, texcoord.t*flare4scale.y)); flare4 = 0.5 - flare4; flare4 = clamp(flare4*flare4fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare4 = sin(flare4*1.57075); flare4 *= sunmask; flare4 = pow(flare4, 1.1f); flare4 *= flare4pow; color.r += flare4*0.6f*flaremultR; color.g += flare4*0.0f*flaremultG; color.b += flare4*0.8f*flaremultB; //far small pink flare2 vec2 flare4Bscale = vec2(7.5f*flarescale, 7.5f*flarescale); float flare4Bpow = 0.4f; float flare4Bfill = 2.0f; float flare4Boffset = 0.0f; vec2 flare4Bpos = vec2( ((1.0 - lPos.x)*(flare4Boffset + 1.0) - (flare4Boffset*0.5)) *aspectRatio*flare4Bscale.x, ((1.0 - lPos.y)*(flare4Boffset + 1.0) - (flare4Boffset*0.5)) *flare4Bscale.y); float flare4B = distance(flare4Bpos, vec2(texcoord.s*aspectRatio*flare4Bscale.x, texcoord.t*flare4Bscale.y)); flare4B = 0.5 - flare4B; flare4B = clamp(flare4B*flare4Bfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare4B = sin(flare4B*1.57075); flare4B *= sunmask; flare4B = pow(flare4B, 1.1f); flare4B *= flare4Bpow; color.r += flare4B*0.4f*flaremultR; color.g += flare4B*0.0f*flaremultG; color.b += flare4B*0.8f*flaremultB; //far small pink flare3 vec2 flare4Cscale = vec2(37.5f*flarescale, 37.5f*flarescale); float flare4Cpow = 2.0f; float flare4Cfill = 2.0f; float flare4Coffset = -0.3f; vec2 flare4Cpos = vec2( ((1.0 - lPos.x)*(flare4Coffset + 1.0) - (flare4Coffset*0.5)) *aspectRatio*flare4Cscale.x, ((1.0 - lPos.y)*(flare4Coffset + 1.0) - (flare4Coffset*0.5)) *flare4Cscale.y); float flare4C = distance(flare4Cpos, vec2(texcoord.s*aspectRatio*flare4Cscale.x, texcoord.t*flare4Cscale.y)); flare4C = 0.5 - flare4C; flare4C = clamp(flare4C*flare4Cfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare4C = sin(flare4C*1.57075); flare4C *= sunmask; flare4C = pow(flare4C, 1.1f); flare4C *= flare4Cpow; color.r += flare4C*0.6f*flaremultR; color.g += flare4C*0.3f*flaremultG; color.b += flare4C*0.1f*flaremultB; //far small pink flare4 vec2 flare4Dscale = vec2(67.5f*flarescale, 67.5f*flarescale); float flare4Dpow = 1.0f; float flare4Dfill = 2.0f; float flare4Doffset = -0.35f; vec2 flare4Dpos = vec2( ((1.0 - lPos.x)*(flare4Doffset + 1.0) - (flare4Doffset*0.5)) *aspectRatio*flare4Dscale.x, ((1.0 - lPos.y)*(flare4Doffset + 1.0) - (flare4Doffset*0.5)) *flare4Dscale.y); float flare4D = distance(flare4Dpos, vec2(texcoord.s*aspectRatio*flare4Dscale.x, texcoord.t*flare4Dscale.y)); flare4D = 0.5 - flare4D; flare4D = clamp(flare4D*flare4Dfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare4D = sin(flare4D*1.57075); flare4D *= sunmask; flare4D = pow(flare4D, 1.1f); flare4D *= flare4Dpow; color.r += flare4D*0.2f*flaremultR; color.g += flare4D*0.2f*flaremultG; color.b += flare4D*0.2f*flaremultB; //far small pink flare5 vec2 flare4Escale = vec2(60.5f*flarescale, 60.5f*flarescale); float flare4Epow = 1.0f; float flare4Efill = 3.0f; float flare4Eoffset = -0.3393f; vec2 flare4Epos = vec2( ((1.0 - lPos.x)*(flare4Eoffset + 1.0) - (flare4Eoffset*0.5)) *aspectRatio*flare4Escale.x, ((1.0 - lPos.y)*(flare4Eoffset + 1.0) - (flare4Eoffset*0.5)) *flare4Escale.y); float flare4E = distance(flare4Epos, vec2(texcoord.s*aspectRatio*flare4Escale.x, texcoord.t*flare4Escale.y)); flare4E = 0.5 - flare4E; flare4E = clamp(flare4E*flare4Efill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare4E = sin(flare4E*1.57075); flare4E *= sunmask; flare4E = pow(flare4E, 1.1f); flare4E *= flare4Epow; color.r += flare4E*0.2f*flaremultR; color.g += flare4E*0.2f*flaremultG; color.b += flare4E*0.0f*flaremultB; //far small pink flare5 vec2 flare4Fscale = vec2(20.5f*flarescale, 20.5f*flarescale); float flare4Fpow = 3.0f; float flare4Ffill = 3.0f; float flare4Foffset = -0.4713f; vec2 flare4Fpos = vec2( ((1.0 - lPos.x)*(flare4Foffset + 1.0) - (flare4Foffset*0.5)) *aspectRatio*flare4Fscale.x, ((1.0 - lPos.y)*(flare4Foffset + 1.0) - (flare4Foffset*0.5)) *flare4Fscale.y); float flare4F = distance(flare4Fpos, vec2(texcoord.s*aspectRatio*flare4Fscale.x, texcoord.t*flare4Fscale.y)); flare4F = 0.5 - flare4F; flare4F = clamp(flare4F*flare4Ffill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare4F = sin(flare4F*1.57075); flare4F *= sunmask; flare4F = pow(flare4F, 1.1f); flare4F *= flare4Fpow; color.r += flare4F*0.6f*flaremultR; color.g += flare4F*0.4f*flaremultG; color.b += flare4F*0.1f*flaremultB; vec2 flare5scale = vec2(3.2f*flarescale , 3.2f*flarescale ); float flare5pow = 13.4f; float flare5fill = 1.0f; float flare5offset = -2.0f; vec2 flare5pos = vec2( ((1.0 - lPos.x)*(flare5offset + 1.0) - (flare5offset*0.5)) *aspectRatio*flare5scale.x, ((1.0 - lPos.y)*(flare5offset + 1.0) - (flare5offset*0.5)) *flare5scale.y); float flare5 = distance(flare5pos, vec2(texcoord.s*aspectRatio*flare5scale.x, texcoord.t*flare5scale.y)); flare5 = 0.5 - flare5; flare5 = clamp(flare5*flare5fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare5 *= sunmask; flare5 = pow(flare5, 1.9f); flare5 *= flare5pow; color.r += flare5*0.9f*flaremultR; color.g += flare5*0.4f*flaremultG; color.b += flare5*0.1f*flaremultB; //close ring flare red vec2 flare6scale = vec2(1.2f*flarescale, 1.2f*flarescale); float flare6pow = 0.2f; float flare6fill = 5.0f; float flare6offset = -1.9f; vec2 flare6pos = vec2( ((1.0 - lPos.x)*(flare6offset + 1.0) - (flare6offset*0.5)) *aspectRatio*flare6scale.x, ((1.0 - lPos.y)*(flare6offset + 1.0) - (flare6offset*0.5)) *flare6scale.y); float flare6 = distance(flare6pos, vec2(texcoord.s*aspectRatio*flare6scale.x, texcoord.t*flare6scale.y)); flare6 = 0.5 - flare6; flare6 = clamp(flare6*flare6fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare6 = pow(flare6, 1.6f); flare6 = sin(flare6*3.1415); flare6 *= sunmask; flare6 *= flare6pow; color.r += flare6*1.0f*flaremultR; color.g += flare6*0.0f*flaremultG; color.b += flare6*0.0f*flaremultB; //close ring flare green vec2 flare6Bscale = vec2(1.1f*flarescale, 1.1f*flarescale); float flare6Bpow = 0.2f; float flare6Bfill = 5.0f; float flare6Boffset = -1.9f; vec2 flare6Bpos = vec2( ((1.0 - lPos.x)*(flare6Boffset + 1.0) - (flare6Boffset*0.5)) *aspectRatio*flare6Bscale.x, ((1.0 - lPos.y)*(flare6Boffset + 1.0) - (flare6Boffset*0.5)) *flare6Bscale.y); float flare6B = distance(flare6Bpos, vec2(texcoord.s*aspectRatio*flare6Bscale.x, texcoord.t*flare6Bscale.y)); flare6B = 0.5 - flare6B; flare6B = clamp(flare6B*flare6Bfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare6B = pow(flare6B, 1.6f); flare6B = sin(flare6B*3.1415); flare6B *= sunmask; flare6B *= flare6Bpow; color.r += flare6B*1.0f*flaremultR; color.g += flare6B*0.4f*flaremultG; color.b += flare6B*0.0f*flaremultB; //close ring flare blue vec2 flare6Cscale = vec2(0.9f*flarescale, 0.9f*flarescale); float flare6Cpow = 0.3f; float flare6Cfill = 5.0f; float flare6Coffset = -1.9f; vec2 flare6Cpos = vec2( ((1.0 - lPos.x)*(flare6Coffset + 1.0) - (flare6Coffset*0.5)) *aspectRatio*flare6Cscale.x, ((1.0 - lPos.y)*(flare6Coffset + 1.0) - (flare6Coffset*0.5)) *flare6Cscale.y); float flare6C = distance(flare6Cpos, vec2(texcoord.s*aspectRatio*flare6Cscale.x, texcoord.t*flare6Cscale.y)); flare6C = 0.5 - flare6C; flare6C = clamp(flare6C*flare6Cfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare6C = pow(flare6C, 1.8f); flare6C = sin(flare6C*3.1415); flare6C *= sunmask; flare6C *= flare6Cpow; color.r += flare6C*0.5f*flaremultR; color.g += flare6C*0.3f*flaremultG; color.b += flare6C*0.0f*flaremultB; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Center orange strip 1 vec2 flare_strip1_scale = vec2(0.5f*flarescale, 40.0f*flarescale); float flare_strip1_pow = 0.25f; float flare_strip1_fill = 12.0f; float flare_strip1_offset = 0.0f; vec2 flare_strip1_pos = vec2(lPos.x*aspectRatio*flare_strip1_scale.x, lPos.y*flare_strip1_scale.y); float flare_strip1_ = distance(flare_strip1_pos, vec2(texcoord.s*aspectRatio*flare_strip1_scale.x, texcoord.t*flare_strip1_scale.y)); flare_strip1_ = 0.5 - flare_strip1_; flare_strip1_ = clamp(flare_strip1_*flare_strip1_fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_strip1_ *= sunmask; flare_strip1_ = pow(flare_strip1_, 1.4f); flare_strip1_ *= flare_strip1_pow; color.r += flare_strip1_*0.5f*flaremultR; color.g += flare_strip1_*0.3f*flaremultG; color.b += flare_strip1_*0.0f*flaremultB; //Center orange strip 3 vec2 flare_strip3_scale = vec2(0.4f*flarescale, 35.0f*flarescale); float flare_strip3_pow = 0.5f; float flare_strip3_fill = 10.0f; float flare_strip3_offset = 0.0f; vec2 flare_strip3_pos = vec2(lPos.x*aspectRatio*flare_strip3_scale.x, lPos.y*flare_strip3_scale.y); float flare_strip3_ = distance(flare_strip3_pos, vec2(texcoord.s*aspectRatio*flare_strip3_scale.x, texcoord.t*flare_strip3_scale.y)); flare_strip3_ = 0.5 - flare_strip3_; flare_strip3_ = clamp(flare_strip3_*flare_strip3_fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_strip3_ *= sunmask; flare_strip3_ = pow(flare_strip3_, 1.4f); flare_strip3_ *= flare_strip3_pow; color.r += flare_strip3_*0.5f*flaremultR; color.g += flare_strip3_*0.3f*flaremultG; color.b += flare_strip3_*0.0f*flaremultB; //mid orange sweep vec2 flare_extrascale = vec2(6.0f*flarescale, 6.0f*flarescale); float flare_extrapow = 4.0f; float flare_extrafill = 1.1f; float flare_extraoffset = -0.75f; vec2 flare_extrapos = vec2( ((1.0 - lPos.x)*(flare_extraoffset + 1.0) - (flare_extraoffset*0.5)) *aspectRatio*flare_extrascale.x, ((1.0 - lPos.y)*(flare_extraoffset + 1.0) - (flare_extraoffset*0.5)) *flare_extrascale.y); float flare_extra = distance(flare_extrapos, vec2(texcoord.s*aspectRatio*flare_extrascale.x, texcoord.t*flare_extrascale.y)); flare_extra = 0.5 - flare_extra; flare_extra = clamp(flare_extra*flare_extrafill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_extra = sin(flare_extra*1.57075); flare_extra *= sunmask; flare_extra = pow(flare_extra, 1.1f); flare_extra *= flare_extrapow; //subtract vec2 flare_extraBscale = vec2(5.1f*flarescale, 5.1f*flarescale); float flare_extraBpow = 1.5f; float flare_extraBfill = 1.0f; float flare_extraBoffset = -0.77f; vec2 flare_extraBpos = vec2( ((1.0 - lPos.x)*(flare_extraBoffset + 1.0) - (flare_extraBoffset*0.5)) *aspectRatio*flare_extraBscale.x, ((1.0 - lPos.y)*(flare_extraBoffset + 1.0) - (flare_extraBoffset*0.5)) *flare_extraBscale.y); float flare_extraB = distance(flare_extraBpos, vec2(texcoord.s*aspectRatio*flare_extraBscale.x, texcoord.t*flare_extraBscale.y)); flare_extraB = 0.5 - flare_extraB; flare_extraB = clamp(flare_extraB*flare_extraBfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_extraB = sin(flare_extraB*1.57075); flare_extraB *= sunmask; flare_extraB = pow(flare_extraB, 0.9f); flare_extraB *= flare_extraBpow; flare_extra = clamp(flare_extra - flare_extraB, 0.0, 10.0); color.r += flare_extra*0.5f*flaremultR; color.g += flare_extra*0.3f*flaremultG; color.b += flare_extra*0.0f*flaremultB; //mid orange sweep vec2 flare_extra2scale = vec2(25.0f*flarescale, 25.0f*flarescale); float flare_extra2pow = 2.0f; float flare_extra2fill = 1.1f; float flare_extra2offset = -1.7f; vec2 flare_extra2pos = vec2( ((1.0 - lPos.x)*(flare_extra2offset + 1.0) - (flare_extra2offset*0.5)) *aspectRatio*flare_extra2scale.x, ((1.0 - lPos.y)*(flare_extra2offset + 1.0) - (flare_extra2offset*0.5)) *flare_extra2scale.y); float flare_extra2 = distance(flare_extra2pos, vec2(texcoord.s*aspectRatio*flare_extra2scale.x, texcoord.t*flare_extra2scale.y)); flare_extra2 = 0.5 - flare_extra2; flare_extra2 = clamp(flare_extra2*flare_extra2fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_extra2 = sin(flare_extra2*1.57075); flare_extra2 *= sunmask; flare_extra2 = pow(flare_extra2, 1.1f); flare_extra2 *= flare_extra2pow; //subtract vec2 flare_extra2Bscale = vec2(5.1f*flarescale, 5.1f*flarescale); float flare_extra2Bpow = 1.5f; float flare_extra2Bfill = 1.0f; float flare_extra2Boffset = -0.77f; vec2 flare_extra2Bpos = vec2( ((1.0 - lPos.x)*(flare_extra2Boffset + 1.0) - (flare_extra2Boffset*0.5)) *aspectRatio*flare_extra2Bscale.x, ((1.0 - lPos.y)*(flare_extra2Boffset + 1.0) - (flare_extra2Boffset*0.5)) *flare_extra2Bscale.y); float flare_extra2B = distance(flare_extra2Bpos, vec2(texcoord.s*aspectRatio*flare_extra2Bscale.x, texcoord.t*flare_extra2Bscale.y)); flare_extra2B = 0.5 - flare_extra2B; flare_extra2B = clamp(flare_extra2B*flare_extra2Bfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_extra2B = sin(flare_extra2B*1.57075); flare_extra2B *= sunmask; flare_extra2B = pow(flare_extra2B, 0.9f); flare_extra2B *= flare_extra2Bpow; flare_extra2 = clamp(flare_extra2 - flare_extra2B, 0.0, 10.0); color.r += flare_extra2*0.5f*flaremultR; color.g += flare_extra2*0.3f*flaremultG; color.b += flare_extra2*0.0f*flaremultB; //mid orange sweep vec2 flare_extra3scale = vec2(32.0f*flarescale, 32.0f*flarescale); float flare_extra3pow = 2.5f; float flare_extra3fill = 1.1f; float flare_extra3offset = -1.3f; vec2 flare_extra3pos = vec2( ((1.0 - lPos.x)*(flare_extra3offset + 1.0) - (flare_extra3offset*0.5)) *aspectRatio*flare_extra3scale.x, ((1.0 - lPos.y)*(flare_extra3offset + 1.0) - (flare_extra3offset*0.5)) *flare_extra3scale.y); float flare_extra3 = distance(flare_extra3pos, vec2(texcoord.s*aspectRatio*flare_extra3scale.x, texcoord.t*flare_extra3scale.y)); flare_extra3 = 0.5 - flare_extra3; flare_extra3 = clamp(flare_extra3*flare_extra3fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_extra3 = sin(flare_extra3*1.57075); flare_extra3 *= sunmask; flare_extra3 = pow(flare_extra3, 1.1f); flare_extra3 *= flare_extra3pow; //subtract vec2 flare_extra3Bscale = vec2(5.1f*flarescale, 5.1f*flarescale); float flare_extra3Bpow = 1.5f; float flare_extra3Bfill = 1.0f; float flare_extra3Boffset = -0.77f; vec2 flare_extra3Bpos = vec2( ((1.0 - lPos.x)*(flare_extra3Boffset + 1.0) - (flare_extra3Boffset*0.5)) *aspectRatio*flare_extra3Bscale.x, ((1.0 - lPos.y)*(flare_extra3Boffset + 1.0) - (flare_extra3Boffset*0.5)) *flare_extra3Bscale.y); float flare_extra3B = distance(flare_extra3Bpos, vec2(texcoord.s*aspectRatio*flare_extra3Bscale.x, texcoord.t*flare_extra3Bscale.y)); flare_extra3B = 0.5 - flare_extra3B; flare_extra3B = clamp(flare_extra3B*flare_extra3Bfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_extra3B = sin(flare_extra3B*1.57075); flare_extra3B *= sunmask; flare_extra3B = pow(flare_extra3B, 0.9f); flare_extra3B *= flare_extra3Bpow; flare_extra3 = clamp(flare_extra3 - flare_extra3B, 0.0, 10.0); color.r += flare_extra3*0.5f*flaremultR; color.g += flare_extra3*0.4f*flaremultG; color.b += flare_extra3*0.1f*flaremultB; //mid orange sweep vec2 flare_extra4scale = vec2(35.0f*flarescale, 35.0f*flarescale); float flare_extra4pow = 1.0f; float flare_extra4fill = 1.1f; float flare_extra4offset = -1.2f; vec2 flare_extra4pos = vec2( ((1.0 - lPos.x)*(flare_extra4offset + 1.0) - (flare_extra4offset*0.5)) *aspectRatio*flare_extra4scale.x, ((1.0 - lPos.y)*(flare_extra4offset + 1.0) - (flare_extra4offset*0.5)) *flare_extra4scale.y); float flare_extra4 = distance(flare_extra4pos, vec2(texcoord.s*aspectRatio*flare_extra4scale.x, texcoord.t*flare_extra4scale.y)); flare_extra4 = 0.5 - flare_extra4; flare_extra4 = clamp(flare_extra4*flare_extra4fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_extra4 = sin(flare_extra4*1.57075); flare_extra4 *= sunmask; flare_extra4 = pow(flare_extra4, 1.1f); flare_extra4 *= flare_extra4pow; //subtract vec2 flare_extra4Bscale = vec2(5.1f*flarescale, 5.1f*flarescale); float flare_extra4Bpow = 1.5f; float flare_extra4Bfill = 1.0f; float flare_extra4Boffset = -0.77f; vec2 flare_extra4Bpos = vec2( ((1.0 - lPos.x)*(flare_extra4Boffset + 1.0) - (flare_extra4Boffset*0.5)) *aspectRatio*flare_extra4Bscale.x, ((1.0 - lPos.y)*(flare_extra4Boffset + 1.0) - (flare_extra4Boffset*0.5)) *flare_extra4Bscale.y); float flare_extra4B = distance(flare_extra4Bpos, vec2(texcoord.s*aspectRatio*flare_extra4Bscale.x, texcoord.t*flare_extra4Bscale.y)); flare_extra4B = 0.5 - flare_extra4B; flare_extra4B = clamp(flare_extra4B*flare_extra4Bfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_extra4B = sin(flare_extra4B*1.57075); flare_extra4B *= sunmask; flare_extra4B = pow(flare_extra4B, 0.9f); flare_extra4B *= flare_extra4Bpow; flare_extra4 = clamp(flare_extra4 - flare_extra4B, 0.0, 10.0); color.r += flare_extra4*0.6f*flaremultR; color.g += flare_extra4*0.4f*flaremultG; color.b += flare_extra4*0.1f*flaremultB; //mid orange sweep vec2 flare_extra5scale = vec2(25.0f*flarescale, 25.0f*flarescale); float flare_extra5pow = 4.0f; float flare_extra5fill = 1.1f; float flare_extra5offset = -0.9f; vec2 flare_extra5pos = vec2( ((1.0 - lPos.x)*(flare_extra5offset + 1.0) - (flare_extra5offset*0.5)) *aspectRatio*flare_extra5scale.x, ((1.0 - lPos.y)*(flare_extra5offset + 1.0) - (flare_extra5offset*0.5)) *flare_extra5scale.y); float flare_extra5 = distance(flare_extra5pos, vec2(texcoord.s*aspectRatio*flare_extra5scale.x, texcoord.t*flare_extra5scale.y)); flare_extra5 = 0.5 - flare_extra5; flare_extra5 = clamp(flare_extra5*flare_extra5fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_extra5 = sin(flare_extra5*1.57075); flare_extra5 *= sunmask; flare_extra5 = pow(flare_extra5, 1.1f); flare_extra5 *= flare_extra5pow; //subtract vec2 flare_extra5Bscale = vec2(5.1f*flarescale, 5.1f*flarescale); float flare_extra5Bpow = 1.5f; float flare_extra5Bfill = 1.0f; float flare_extra5Boffset = -0.77f; vec2 flare_extra5Bpos = vec2( ((1.0 - lPos.x)*(flare_extra5Boffset + 1.0) - (flare_extra5Boffset*0.5)) *aspectRatio*flare_extra5Bscale.x, ((1.0 - lPos.y)*(flare_extra5Boffset + 1.0) - (flare_extra5Boffset*0.5)) *flare_extra5Bscale.y); float flare_extra5B = distance(flare_extra5Bpos, vec2(texcoord.s*aspectRatio*flare_extra5Bscale.x, texcoord.t*flare_extra5Bscale.y)); flare_extra5B = 0.5 - flare_extra5B; flare_extra5B = clamp(flare_extra5B*flare_extra5Bfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_extra5B = sin(flare_extra5B*1.57075); flare_extra5B *= sunmask; flare_extra5B = pow(flare_extra5B, 0.9f); flare_extra5B *= flare_extra5Bpow; flare_extra5 = clamp(flare_extra5 - flare_extra5B, 0.0, 10.0); color.r += flare_extra5*0.5f*flaremultR; color.g += flare_extra5*0.3f*flaremultG; color.b += flare_extra5*0.0f*flaremultB; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// vec3 tempColor = vec3(0.0); //-------------------red-------------------------------------------------------------------------------------- vec2 flare_red_scale = vec2(5.2f*flarescale, 5.2f*flarescale); flare_red_scale.x *= (centermask); flare_red_scale.y *= (centermask); float flare_red_pow = 4.5f; float flare_red_fill = 15.0f; float flare_red_offset = -1.0f; vec2 flare_red_pos = vec2( ((1.0 - lPos.x)*(flare_red_offset + 1.0) - (flare_red_offset*0.5)) *aspectRatio*flare_red_scale.x, ((1.0 - lPos.y)*(flare_red_offset + 1.0) - (flare_red_offset*0.5)) *flare_red_scale.y); float flare_red_ = distance(flare_red_pos, vec2(texcoord.s*aspectRatio*flare_red_scale.x, texcoord.t*flare_red_scale.y)); flare_red_ = 0.5 - flare_red_; flare_red_ = clamp(flare_red_*flare_red_fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_red_ = sin(flare_red_*1.57075); flare_red_ = pow(flare_red_, 1.1f); flare_red_ *= flare_red_pow; //subtract vec2 flare_redD_scale = vec2(3.0*flarescale, 3.0*flarescale); flare_redD_scale *= 0.99; flare_redD_scale.x *= (centermask); flare_redD_scale.y *= (centermask); float flare_redD_pow = 8.0f; float flare_redD_fill = 1.4f; float flare_redD_offset = -1.2f; vec2 flare_redD_pos = vec2( ((1.0 - lPos.x)*(flare_redD_offset + 1.0) - (flare_redD_offset*0.5)) *aspectRatio*flare_redD_scale.x, ((1.0 - lPos.y)*(flare_redD_offset + 1.0) - (flare_redD_offset*0.5)) *flare_redD_scale.y); float flare_redD_ = distance(flare_redD_pos, vec2(texcoord.s*aspectRatio*flare_redD_scale.x, texcoord.t*flare_redD_scale.y)); flare_redD_ = 0.5 - flare_redD_; flare_redD_ = clamp(flare_redD_*flare_redD_fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_redD_ = sin(flare_redD_*1.57075); flare_redD_ = pow(flare_redD_, 0.9f); flare_redD_ *= flare_redD_pow; flare_red_ = clamp(flare_red_ - flare_redD_, 0.0, 10.0); flare_red_ *= sunmask; tempColor.r += flare_red_*1.0f*flaremultR; tempColor.g += flare_red_*0.0f*flaremultG; tempColor.b += flare_red_*0.0f*flaremultB; //-------------------------------------------------------------------------------------- //-------------------Orange-------------------------------------------------------------------------------------- vec2 flare_orange_scale = vec2(5.0f*flarescale, 5.0f*flarescale); flare_orange_scale.x *= (centermask); flare_orange_scale.y *= (centermask); float flare_orange_pow = 4.5f; float flare_orange_fill = 15.0f; float flare_orange_offset = -1.0f; vec2 flare_orange_pos = vec2( ((1.0 - lPos.x)*(flare_orange_offset + 1.0) - (flare_orange_offset*0.5)) *aspectRatio*flare_orange_scale.x, ((1.0 - lPos.y)*(flare_orange_offset + 1.0) - (flare_orange_offset*0.5)) *flare_orange_scale.y); float flare_orange_ = distance(flare_orange_pos, vec2(texcoord.s*aspectRatio*flare_orange_scale.x, texcoord.t*flare_orange_scale.y)); flare_orange_ = 0.5 - flare_orange_; flare_orange_ = clamp(flare_orange_*flare_orange_fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_orange_ = sin(flare_orange_*1.57075); flare_orange_ = pow(flare_orange_, 1.1f); flare_orange_ *= flare_orange_pow; //subtract vec2 flare_orangeD_scale = vec2(2.884f*flarescale, 2.884f*flarescale); flare_orangeD_scale *= 0.99; flare_orangeD_scale.x *= (centermask); flare_orangeD_scale.y *= (centermask); float flare_orangeD_pow = 8.0f; float flare_orangeD_fill = 1.4f; float flare_orangeD_offset = -1.2f; vec2 flare_orangeD_pos = vec2( ((1.0 - lPos.x)*(flare_orangeD_offset + 1.0) - (flare_orangeD_offset*0.5)) *aspectRatio*flare_orangeD_scale.x, ((1.0 - lPos.y)*(flare_orangeD_offset + 1.0) - (flare_orangeD_offset*0.5)) *flare_orangeD_scale.y); float flare_orangeD_ = distance(flare_orangeD_pos, vec2(texcoord.s*aspectRatio*flare_orangeD_scale.x, texcoord.t*flare_orangeD_scale.y)); flare_orangeD_ = 0.5 - flare_orangeD_; flare_orangeD_ = clamp(flare_orangeD_*flare_orangeD_fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_orangeD_ = sin(flare_orangeD_*1.57075); flare_orangeD_ = pow(flare_orangeD_, 0.9f); flare_orangeD_ *= flare_orangeD_pow; flare_orange_ = clamp(flare_orange_ - flare_orangeD_, 0.0, 10.0); flare_orange_ *= sunmask; tempColor.r += flare_orange_*1.0f*flaremultR; tempColor.g += flare_orange_*0.0f*flaremultG; tempColor.b += flare_orange_*0.0f*flaremultB; //-------------------------------------------------------------------------------------- //-------------------Green-------------------------------------------------------------------------------------- vec2 flare_green_scale = vec2(4.8f*flarescale, 4.8f*flarescale); flare_green_scale.x *= (centermask); flare_green_scale.y *= (centermask); float flare_green_pow = 4.5f; float flare_green_fill = 15.0f; float flare_green_offset = -1.0f; vec2 flare_green_pos = vec2( ((1.0 - lPos.x)*(flare_green_offset + 1.0) - (flare_green_offset*0.5)) *aspectRatio*flare_green_scale.x, ((1.0 - lPos.y)*(flare_green_offset + 1.0) - (flare_green_offset*0.5)) *flare_green_scale.y); float flare_green_ = distance(flare_green_pos, vec2(texcoord.s*aspectRatio*flare_green_scale.x, texcoord.t*flare_green_scale.y)); flare_green_ = 0.5 - flare_green_; flare_green_ = clamp(flare_green_*flare_green_fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_green_ = sin(flare_green_*1.57075); flare_green_ = pow(flare_green_, 1.1f); flare_green_ *= flare_green_pow; //subtract vec2 flare_greenD_scale = vec2(2.769f*flarescale, 2.769f*flarescale); flare_greenD_scale *= 0.99; flare_greenD_scale.x *= (centermask); flare_greenD_scale.y *= (centermask); float flare_greenD_pow = 8.0f; float flare_greenD_fill = 1.4f; float flare_greenD_offset = -1.2f; vec2 flare_greenD_pos = vec2( ((1.0 - lPos.x)*(flare_greenD_offset + 1.0) - (flare_greenD_offset*0.5)) *aspectRatio*flare_greenD_scale.x, ((1.0 - lPos.y)*(flare_greenD_offset + 1.0) - (flare_greenD_offset*0.5)) *flare_greenD_scale.y); float flare_greenD_ = distance(flare_greenD_pos, vec2(texcoord.s*aspectRatio*flare_greenD_scale.x, texcoord.t*flare_greenD_scale.y)); flare_greenD_ = 0.5 - flare_greenD_; flare_greenD_ = clamp(flare_greenD_*flare_greenD_fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_greenD_ = sin(flare_greenD_*1.57075); flare_greenD_ = pow(flare_greenD_, 0.9f); flare_greenD_ *= flare_greenD_pow; flare_green_ = clamp(flare_green_ - flare_greenD_, 0.0, 10.0); flare_green_ *= sunmask; tempColor.r += flare_green_*0.25f*flaremultR; tempColor.g += flare_green_*1.0f*flaremultG; tempColor.b += flare_green_*0.0f*flaremultB; //-------------------------------------------------------------------------------------- //-------------------Blue-------------------------------------------------------------------------------------- vec2 flare_blue_scale = vec2(4.6f*flarescale, 4.6f*flarescale); flare_blue_scale.x *= (centermask); flare_blue_scale.y *= (centermask); float flare_blue_pow = 4.5f; float flare_blue_fill = 15.0f; float flare_blue_offset = -1.0f; vec2 flare_blue_pos = vec2( ((1.0 - lPos.x)*(flare_blue_offset + 1.0) - (flare_blue_offset*0.5)) *aspectRatio*flare_blue_scale.x, ((1.0 - lPos.y)*(flare_blue_offset + 1.0) - (flare_blue_offset*0.5)) *flare_blue_scale.y); float flare_blue_ = distance(flare_blue_pos, vec2(texcoord.s*aspectRatio*flare_blue_scale.x, texcoord.t*flare_blue_scale.y)); flare_blue_ = 0.5 - flare_blue_; flare_blue_ = clamp(flare_blue_*flare_blue_fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_blue_ = sin(flare_blue_*1.57075); flare_blue_ = pow(flare_blue_, 1.1f); flare_blue_ *= flare_blue_pow; //subtract vec2 flare_blueD_scale = vec2(2.596f*flarescale, 2.596f*flarescale); flare_blueD_scale *= 0.99; flare_blueD_scale.x *= (centermask); flare_blueD_scale.y *= (centermask); float flare_blueD_pow = 8.0f; float flare_blueD_fill = 1.4f; float flare_blueD_offset = -1.2f; vec2 flare_blueD_pos = vec2( ((1.0 - lPos.x)*(flare_blueD_offset + 1.0) - (flare_blueD_offset*0.5)) *aspectRatio*flare_blueD_scale.x, ((1.0 - lPos.y)*(flare_blueD_offset + 1.0) - (flare_blueD_offset*0.5)) *flare_blueD_scale.y); float flare_blueD_ = distance(flare_blueD_pos, vec2(texcoord.s*aspectRatio*flare_blueD_scale.x, texcoord.t*flare_blueD_scale.y)); flare_blueD_ = 0.5 - flare_blueD_; flare_blueD_ = clamp(flare_blueD_*flare_blueD_fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare_blueD_ = sin(flare_blueD_*1.57075); flare_blueD_ = pow(flare_blueD_, 0.9f); flare_blueD_ *= flare_blueD_pow; flare_blue_ = clamp(flare_blue_ - flare_blueD_, 0.0, 10.0); flare_blue_ *= sunmask; tempColor.r += flare_blue_*0.0f*flaremultR; tempColor.g += flare_blue_*0.0f*flaremultG; tempColor.b += flare_blue_*0.75f*flaremultB; //-------------------------------------------------------------------------------------- color += (tempColor); //far red glow vec2 flare7Bscale = vec2(0.2f*flarescale, 0.2f*flarescale); float flare7Bpow = 0.1f; float flare7Bfill = 2.0f; float flare7Boffset = 2.9f; vec2 flare7Bpos = vec2( ((1.0 - lPos.x)*(flare7Boffset + 1.0) - (flare7Boffset*0.5)) *aspectRatio*flare7Bscale.x, ((1.0 - lPos.y)*(flare7Boffset + 1.0) - (flare7Boffset*0.5)) *flare7Bscale.y); float flare7B = distance(flare7Bpos, vec2(texcoord.s*aspectRatio*flare7Bscale.x, texcoord.t*flare7Bscale.y)); flare7B = 0.5 - flare7B; flare7B = clamp(flare7B*flare7Bfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare7B = pow(flare7B, 1.9f); flare7B = sin(flare7B*3.1415*0.5); flare7B *= sunmask; flare7B *= flare7Bpow; color.r += flare7B*1.0f*flaremultR; color.g += flare7B*0.0f*flaremultG; color.b += flare7B*0.0f*flaremultB; //Edge blue strip 1 vec2 flare8scale = vec2(0.3f*flarescale, 40.5f*flarescale); float flare8pow = 0.5f; float flare8fill = 12.0f; float flare8offset = 1.0f; vec2 flare8pos = vec2( ((1.0 - lPos.x)*(flare8offset + 1.0) - (flare8offset*0.5)) *aspectRatio*flare8scale.x, ((lPos.y)*(flare8offset + 1.0) - (flare8offset*0.5)) *flare8scale.y); float flare8 = distance(flare8pos, vec2(texcoord.s*aspectRatio*flare8scale.x, texcoord.t*flare8scale.y)); flare8 = 0.5 - flare8; flare8 = clamp(flare8*flare8fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare8 *= sunmask; flare8 = pow(flare8, 1.4f); flare8 *= flare8pow; flare8 *= edgemaskx; color.r += flare8*0.0f*flaremultR; color.g += flare8*0.3f*flaremultG; color.b += flare8*0.8f*flaremultB; //Edge blue strip 1 vec2 flare9scale = vec2(0.2f*flarescale, 5.5f*flarescale); float flare9pow = 1.9f; float flare9fill = 2.0f; vec2 flare9offset = vec2(1.0f, 0.0f); vec2 flare9pos = vec2( ((1.0 - lPos.x)*(flare9offset.x + 1.0) - (flare9offset.x*0.5)) *aspectRatio*flare9scale.x, ((1.0 - lPos.y)*(flare9offset.y + 1.0) - (flare9offset.y*0.5)) *flare9scale.y); float flare9 = distance(flare9pos, vec2(texcoord.s*aspectRatio*flare9scale.x, texcoord.t*flare9scale.y)); flare9 = 0.5 - flare9; flare9 = clamp(flare9*flare9fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare9 *= sunmask; flare9 = pow(flare9, 1.4f); flare9 *= flare9pow; flare9 *= edgemaskx; color.r += flare9*0.2f*flaremultR; color.g += flare9*0.4f*flaremultG; color.b += flare9*0.9f*flaremultB; //SMALL SWEEPS /////////////////////////////// //mid orange sweep vec2 flare10scale = vec2(6.0f*flarescale, 6.0f*flarescale); float flare10pow = 1.9f; float flare10fill = 1.1f; float flare10offset = -0.7f; vec2 flare10pos = vec2( ((1.0 - lPos.x)*(flare10offset + 1.0) - (flare10offset*0.5)) *aspectRatio*flare10scale.x, ((1.0 - lPos.y)*(flare10offset + 1.0) - (flare10offset*0.5)) *flare10scale.y); float flare10 = distance(flare10pos, vec2(texcoord.s*aspectRatio*flare10scale.x, texcoord.t*flare10scale.y)); flare10 = 0.5 - flare10; flare10 = clamp(flare10*flare10fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare10 = sin(flare10*1.57075); flare10 *= sunmask; flare10 = pow(flare10, 1.1f); flare10 *= flare10pow; //subtract vec2 flare10Bscale = vec2(5.1f*flarescale, 5.1f*flarescale); float flare10Bpow = 1.5f; float flare10Bfill = 1.0f; float flare10Boffset = -0.77f; vec2 flare10Bpos = vec2( ((1.0 - lPos.x)*(flare10Boffset + 1.0) - (flare10Boffset*0.5)) *aspectRatio*flare10Bscale.x, ((1.0 - lPos.y)*(flare10Boffset + 1.0) - (flare10Boffset*0.5)) *flare10Bscale.y); float flare10B = distance(flare10Bpos, vec2(texcoord.s*aspectRatio*flare10Bscale.x, texcoord.t*flare10Bscale.y)); flare10B = 0.5 - flare10B; flare10B = clamp(flare10B*flare10Bfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare10B = sin(flare10B*1.57075); flare10B *= sunmask; flare10B = pow(flare10B, 0.9f); flare10B *= flare10Bpow; flare10 = clamp(flare10 - flare10B, 0.0, 10.0); color.r += flare10*0.5f*flaremultR; color.g += flare10*0.3f*flaremultG; color.b += flare10*0.0f*flaremultB; //mid blue sweep vec2 flare10Cscale = vec2(6.0f*flarescale, 6.0f*flarescale); float flare10Cpow = 1.9f; float flare10Cfill = 1.1f; float flare10Coffset = -0.6f; vec2 flare10Cpos = vec2( ((1.0 - lPos.x)*(flare10Coffset + 1.0) - (flare10Coffset*0.5)) *aspectRatio*flare10Cscale.x, ((1.0 - lPos.y)*(flare10Coffset + 1.0) - (flare10Coffset*0.5)) *flare10Cscale.y); float flare10C = distance(flare10Cpos, vec2(texcoord.s*aspectRatio*flare10Cscale.x, texcoord.t*flare10Cscale.y)); flare10C = 0.5 - flare10C; flare10C = clamp(flare10C*flare10Cfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare10C = sin(flare10C*1.57075); flare10C *= sunmask; flare10C = pow(flare10C, 1.1f); flare10C *= flare10Cpow; //subtract vec2 flare10Dscale = vec2(5.1f*flarescale, 5.1f*flarescale); float flare10Dpow = 1.5f; float flare10Dfill = 1.0f; float flare10Doffset = -0.67f; vec2 flare10Dpos = vec2( ((1.0 - lPos.x)*(flare10Doffset + 1.0) - (flare10Doffset*0.5)) *aspectRatio*flare10Dscale.x, ((1.0 - lPos.y)*(flare10Doffset + 1.0) - (flare10Doffset*0.5)) *flare10Dscale.y); float flare10D = distance(flare10Dpos, vec2(texcoord.s*aspectRatio*flare10Dscale.x, texcoord.t*flare10Dscale.y)); flare10D = 0.5 - flare10D; flare10D = clamp(flare10D*flare10Dfill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare10D = sin(flare10D*1.57075); flare10D *= sunmask; flare10D = pow(flare10D, 0.9f); flare10D *= flare10Dpow; flare10C = clamp(flare10C - flare10D, 0.0, 10.0); color.r += flare10C*0.5f*flaremultR; color.g += flare10C*0.3f*flaremultG; color.b += flare10C*0.0f*flaremultB; ////////////////////////////////////////////////////////// //Pointy fuzzy glow dots//////////////////////////////////////////////// //RedGlow1 vec2 flare11scale = vec2(1.5f*flarescale, 1.5f*flarescale); float flare11pow = 1.1f; float flare11fill = 2.0f; float flare11offset = -0.523f; vec2 flare11pos = vec2( ((1.0 - lPos.x)*(flare11offset + 1.0) - (flare11offset*0.5)) *aspectRatio*flare11scale.x, ((1.0 - lPos.y)*(flare11offset + 1.0) - (flare11offset*0.5)) *flare11scale.y); float flare11 = distance(flare11pos, vec2(texcoord.s*aspectRatio*flare11scale.x, texcoord.t*flare11scale.y)); flare11 = 0.5 - flare11; flare11 = clamp(flare11*flare11fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare11 = pow(flare11, 2.9f); flare11 *= sunmask; flare11 *= flare11pow; color.r += flare11*1.0f*flaremultR; color.g += flare11*0.2f*flaremultG; color.b += flare11*0.0f*flaremultB; //PurpleGlow2 vec2 flare12scale = vec2(2.5f*flarescale, 2.5f*flarescale); float flare12pow = 0.5f; float flare12fill = 2.0f; float flare12offset = -0.323f; vec2 flare12pos = vec2( ((1.0 - lPos.x)*(flare12offset + 1.0) - (flare12offset*0.5)) *aspectRatio*flare12scale.x, ((1.0 - lPos.y)*(flare12offset + 1.0) - (flare12offset*0.5)) *flare12scale.y); float flare12 = distance(flare12pos, vec2(texcoord.s*aspectRatio*flare12scale.x, texcoord.t*flare12scale.y)); flare12 = 0.5 - flare12; flare12 = clamp(flare12*flare12fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare12 = pow(flare12, 2.9f); flare12 *= sunmask; flare12 *= flare12pow; color.r += flare12*0.7f*flaremultR; color.g += flare12*0.3f*flaremultG; color.b += flare12*0.0f*flaremultB; //BlueGlow3 vec2 flare13scale = vec2(1.0f*flarescale, 1.0f*flarescale); float flare13pow = 1.5f; float flare13fill = 2.0f; float flare13offset = +0.138f; vec2 flare13pos = vec2( ((1.0 - lPos.x)*(flare13offset + 1.0) - (flare13offset*0.5)) *aspectRatio*flare13scale.x, ((1.0 - lPos.y)*(flare13offset + 1.0) - (flare13offset*0.5)) *flare13scale.y); float flare13 = distance(flare13pos, vec2(texcoord.s*aspectRatio*flare13scale.x, texcoord.t*flare13scale.y)); flare13 = 0.5 - flare13; flare13 = clamp(flare13*flare13fill, 0.0, 1.0) * clamp(-sP.z, 0.0, 1.0); flare13 = pow(flare13, 2.9f); flare13 *= sunmask; flare13 *= flare13pow; color.r += flare13*0.5f*flaremultR; color.g += flare13*0.3f*flaremultG; color.b += flare13*0.0f*flaremultB; } } }
Copy/Paste into line #2007
LensFlare(color);
Once you're done there, Click File > Save and then copy/paste the final.fsh file BACK into the .zip file and overwrite the original when prompted. Then place the entire zip file (DON'T unzip it) into your .minecraft/shaderpacks folder.
Open up minecraft using your Shaders profile and enable that pack using the Options > Shaders... section in the main menu when in-game.
If you have done everything correctly, you should see a nice Lens Flare around the sun Congrats!
Before
After
Credit to Catman from the Sonic Ether forums for the coding!!