1. 개요
마인크래프트의 셰이더를 수정하면 보다 나은 연출 효과를 얻을 수 있다. 쉐이더는 사용자의 취향에 따라 자유롭게 수정이 가능하다.
셰이더를 수정하려면 Notepad++같은 텍스트 에디터, 그리고 약간의 GLSL 지식이 필요하다.
셰이더를 수정하려면 Notepad++같은 텍스트 에디터, 그리고 약간의 GLSL 지식이 필요하다.
- Ctrl+G를 누르면 창이 뜨는데 창에다가 원하는 줄의 번호를 넣으면 그 줄로 찾아가게 된다.
- 그리고 Ctrl+F를 누르면 창이 뜨는데 창에다가 찾고싶은 단어/문장을 입력하면 그 단어/문장을 찾는다.
1.1. SEUS
1.1.1. SEUS Renewed 1.0.0
1.1.2. SEUS v11
1.1.3. SEUS v10
1.1.3.1. SEUS v10.1
1.1.3.2. SEUS v10.2
1.2. KUDA
1.3. Chocapic13
1.4. Countinuum
2. 기타 효과 추가방법
2.1. Lens Flare
Lens Flare는 태양을 직접 바라볼 때 빛무리가 생기는 현상을 재현한 것이다. 적용하면 전체적으로 밝아지지만 눈이 쉽게 피로해질 수 있다.
셰이더 별로 적용 방법이 차이가 있을 수 있으나[1] 필요한 소스코드는 모두 같다. 정확한 적용법은 세부 문서를 참조하라. 하지만 SEUS10의 렌즈 플레어 코드를 11에 적용해도 문제 없이 돌아가며 일부 쉐이더는 자체적으로 렌즈 플레어를 지원한다. 따라서 다른 쉐이더의 렌즈 플레어 코드를 복사하여 다른 쉐이더에 집어 넣는 것이 가능하다. 다만 아래를 보면 알겠지만 렌즈 플레어 효과 코드가 굉장히 길다.다행히 게임 내에서 직접 옵션을 킬 수 있는 경우도 있다.
셰이더 별로 적용 방법이 차이가 있을 수 있으나[1] 필요한 소스코드는 모두 같다. 정확한 적용법은 세부 문서를 참조하라. 하지만 SEUS10의 렌즈 플레어 코드를 11에 적용해도 문제 없이 돌아가며 일부 쉐이더는 자체적으로 렌즈 플레어를 지원한다. 따라서 다른 쉐이더의 렌즈 플레어 코드를 복사하여 다른 쉐이더에 집어 넣는 것이 가능하다. 다만 아래를 보면 알겠지만 렌즈 플레어 효과 코드가 굉장히 길다.다행히 게임 내에서 직접 옵션을 킬 수 있는 경우도 있다.
- final.fsh를 Notepad++로 연다.
2.아래 코드를 붙여넣는다.uniform mat4 gbufferProjection;uniform mat4 gbufferProjectionInverse;가 바로 위에 붙여 넣는다.
3.아래코드를 붙여넣는다.
uniform vec3 sunPosition;
|
uniform int fog mode; 가 바로 아래에 붙여 넣는다.
4.상당히 긴 코드를 붙여 넣는다.
[ 펼치기 · 접기 ]
void LowlightFuzziness(inout vec3 color, in BloomDataStruct bloomData)
{float lum = Luminance(color.rgb);
float factor = 1.0f - clamp(lum * 50000000.0f, 0.0f, 1.0f);
//factor *= factor * factor;
float time = frameTimeCounter * 4.0f;
vec2 coord = texture2D(noisetex, vec2(time, time / 64.0f)).xy;
vec3 snow = BicubicTexture(noisetex, (texcoord.st + coord) / (512.0f / vec2(viewWidth, viewHeight))).rgb; //visual snow
vec3 snow2 = BicubicTexture(noisetex, (texcoord.st + coord) / (128.0f / vec2(viewWidth, viewHeight))).rgb; //visual snow
vec3 rodColor = vec3(0.2f, 0.4f, 1.0f) * 2.5;
vec3 rodLight = dot(color.rgb + snow.r * 0.0000000005f, vec3(0.0f, 0.6f, 0.4f)) * rodColor;
color.rgb = mix(color.rgb, rodLight, vec3(factor)); //visual acuity loss
color.rgb += snow.rgb * snow2.rgb * snow.rgb * 0.000000002f;
}
여기
/////////////////////////MAIN//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////MAIN//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
| 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; 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); { //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); 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.b += flare1*0.2f*flaremultB; vec2 flare1Bscale = vec2(0.5f*flarescale, 0.5f*flarescale); float flare1Bpow = 6.0f; 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.b += flare1B*0.0f*flaremultB; 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.g += flare2*0.6f*flaremultG; color.b += flare2*0.0f*flaremultB; 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.g += flare2B*0.5f*flaremultG; color.b += flare2B*0.0f*flaremultB; vec2 flare3scale = vec2(2.0f*flarescale, 2.0f*flarescale); float flare3pow = 0.7f; float flare3fill = 10.0f; float flare3offset = -0.5f; 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; 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; color.r += flare3*0.5f*flaremultR; color.b += flare3*0.0f*flaremultB; vec2 flare3Cscale = vec2(3.2f*flarescale, 3.2f*flarescale); float flare3Cpow = 1.4f; float flare3Cfill = 10.0f; float flare3Coffset = -0.0f; 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; 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 *= sunmask; color.r += flare3C*0.5f*flaremultR; color.b += flare3C*0.0f*flaremultB; vec2 flare4scale = vec2(4.5f*flarescale, 4.5f*flarescale); float flare4pow = 0.3f; float flare4fill = 3.0f; float flare4offset = -0.1f; 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.b += flare4*0.8f*flaremultB; vec2 flare4Bscale = vec2(7.5f*flarescale, 7.5f*flarescale); float flare4Bpow = 0.4f; float flare4Bfill = 2.0f; float flare4Boffset = 0.0f; 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.b += flare4B*0.8f*flaremultB; vec2 flare4Cscale = vec2(37.5f*flarescale, 37.5f*flarescale); float flare4Cpow = 2.0f; float flare4Cfill = 2.0f; float flare4Coffset = -0.3f; 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.b += flare4C*0.1f*flaremultB; vec2 flare4Dscale = vec2(67.5f*flarescale, 67.5f*flarescale); float flare4Dpow = 1.0f; float flare4Dfill = 2.0f; float flare4Doffset = -0.35f; 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.b += flare4D*0.2f*flaremultB; vec2 flare4Escale = vec2(60.5f*flarescale, 60.5f*flarescale); float flare4Epow = 1.0f; float flare4Efill = 3.0f; float flare4Eoffset = -0.3393f; 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.b += flare4E*0.0f*flaremultB; vec2 flare4Fscale = vec2(20.5f*flarescale, 20.5f*flarescale); float flare4Fpow = 3.0f; float flare4Ffill = 3.0f; float flare4Foffset = -0.4713f; 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.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; 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.b += flare5*0.1f*flaremultB; vec2 flare6scale = vec2(1.2f*flarescale, 1.2f*flarescale); float flare6pow = 0.2f; float flare6fill = 5.0f; float flare6offset = -1.9f; 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.b += flare6*0.0f*flaremultB; vec2 flare6Bscale = vec2(1.1f*flarescale, 1.1f*flarescale); float flare6Bpow = 0.2f; float flare6Bfill = 5.0f; float flare6Boffset = -1.9f; 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.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; 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.b += flare6C*0.0f*flaremultB; float flare_strip1_pow = 0.25f; float flare_strip1_fill = 12.0f; float flare_strip1_offset = 0.0f; 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.b += flare_strip1_*0.0f*flaremultB; float flare_strip3_pow = 0.5f; float flare_strip3_fill = 10.0f; float flare_strip3_offset = 0.0f; 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.b += flare_strip3_*0.0f*flaremultB; //mid orange sweep float flare_extrapow = 4.0f; float flare_extrafill = 1.1f; float flare_extraoffset = -0.75f; 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; 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; color.r += flare_extra*0.5f*flaremultR; color.b += flare_extra*0.0f*flaremultB; //mid orange sweep float flare_extra2pow = 2.0f; float flare_extra2fill = 1.1f; float flare_extra2offset = -1.7f; 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; float flare_extra2B = distance(flare_extra2Bpos, vec2(texcoord.s*aspectRatio*flare_extra2Bscale.x, texcoord.t*flare_extra2Bscale.y)); vec2 flare_extra3scale = vec2(32.0f*flarescale, 32.0f*flarescale);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; color.r += flare_extra2*0.5f*flaremultR; color.b += flare_extra2*0.0f*flaremultB; //mid orange sweep float flare_extra3pow = 2.5f; float flare_extra3fill = 1.1f; float flare_extra3offset = -1.3f; 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; 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; color.r += flare_extra3*0.5f*flaremultR; color.b += flare_extra3*0.1f*flaremultB; //mid orange sweep float flare_extra4pow = 1.0f; float flare_extra4fill = 1.1f; float flare_extra4offset = -1.2f; 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; float flare_extra4B = distance(flare_extra4Bpos, vec2(texcoord.s*aspectRatio*flare_extra4Bscale.x, texcoord.t*flare_extra4Bscale.y)); vec2 flare_extra5scale = vec2(25.0f*flarescale, 25.0f*flarescale);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; color.r += flare_extra4*0.6f*flaremultR; color.b += flare_extra4*0.1f*flaremultB; //mid orange sweep float flare_extra5pow = 4.0f; float flare_extra5fill = 1.1f; float flare_extra5offset = -0.9f; 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; 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; color.r += flare_extra5*0.5f*flaremultR; color.b += flare_extra5*0.0f*flaremultB; vec3 tempColor = vec3(0.0); 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; 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; 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_ *= sunmask; tempColor.r += flare_red_*1.0f*flaremultR; tempColor.b += flare_red_*0.0f*flaremultB; 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; 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; 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_ *= sunmask; tempColor.r += flare_orange_*1.0f*flaremultR; tempColor.b += flare_orange_*0.0f*flaremultB; 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; 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; 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_ *= sunmask; tempColor.r += flare_green_*0.25f*flaremultR; tempColor.b += flare_green_*0.0f*flaremultB; // 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; 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; 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_ *= sunmask; tempColor.r += flare_blue_*0.0f*flaremultR; tempColor.b += flare_blue_*0.75f*flaremultB; color += (tempColor); vec2 flare7Bscale = vec2(0.2f*flarescale, 0.2f*flarescale); float flare7Bpow = 0.1f; float flare7Bfill = 2.0f; float flare7Boffset = 2.9f; 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.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; 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.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); 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.b += flare9*0.9f*flaremultB; vec2 flare10scale = vec2(6.0f*flarescale, 6.0f*flarescale); float flare10pow = 1.9f; float flare10fill = 1.1f; float flare10offset = -0.7f; 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; 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; color.r += flare10*0.5f*flaremultR; color.b += flare10*0.0f*flaremultB; vec2 flare10Cscale = vec2(6.0f*flarescale, 6.0f*flarescale); float flare10Cpow = 1.9f; float flare10Cfill = 1.1f; float flare10Coffset = -0.6f; 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; 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; color.r += flare10C*0.5f*flaremultR; 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; 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.b += flare11*0.0f*flaremultB; vec2 flare12scale = vec2(2.5f*flarescale, 2.5f*flarescale); float flare12pow = 0.5f; float flare12fill = 2.0f; float flare12offset = -0.323f; 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.b += flare12*0.0f*flaremultB; vec2 flare13scale = vec2(1.0f*flarescale, 1.0f*flarescale); float flare13pow = 1.5f; float flare13fill = 2.0f; float flare13offset = +0.138f; 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.b += flare13*0.0f*flaremultB; } |
5.코드를 붙여 넣는다.
LensFlare(color);
|
//ColorGrading(color);
여기
//color.rgb = texture2DLod(shadowcolor, texcoord.st, 0).rgb * 1.0f;
//color.rgb = texture2DLod(shadowcolor1, texcoord.st, 0).aaa * 1.0f;
//color.rgb = vec3(texture2DLod(shadowtex1, texcoord.st, 0).x) * 1.0f;
//color.rgb = texture2D(gdepth, texcoord.st).bbb * 0.8 + 0.2;
//color.rgb = vec3(fwidth(GetDepthLinear(texcoord.st + vec2(0.5 / viewWidth, 0.5 / viewHeight)) + GetDepthLinear(texcoord.st - vec2(0.5 / viewWidth, 0.5 / viewHeight))));
// color.rgb += fwidth(color.rgb) * 0.5;
gl_FragColor = vec4(color.rgb, 1.0f);
}
여기
//color.rgb = texture2DLod(shadowcolor, texcoord.st, 0).rgb * 1.0f;
//color.rgb = texture2DLod(shadowcolor1, texcoord.st, 0).aaa * 1.0f;
//color.rgb = vec3(texture2DLod(shadowtex1, texcoord.st, 0).x) * 1.0f;
//color.rgb = texture2D(gdepth, texcoord.st).bbb * 0.8 + 0.2;
//color.rgb = vec3(fwidth(GetDepthLinear(texcoord.st + vec2(0.5 / viewWidth, 0.5 / viewHeight)) + GetDepthLinear(texcoord.st - vec2(0.5 / viewWidth, 0.5 / viewHeight))));
// color.rgb += fwidth(color.rgb) * 0.5;
gl_FragColor = vec4(color.rgb, 1.0f);
}
6.저장합니다.
더이상 수정 할게 없으면 쉐이더팩을 다시 압축합니다.
더이상 수정 할게 없으면 쉐이더팩을 다시 압축합니다.
2.2. 광원 효과 밝기 조절
출처
[youtube]
[youtube]
- composite1.fsh 파일을 엽니다.
2.여기를 찾습니다.
surface.cloudShadow = 1.0f; const float sunlightMult = 0.21f; //Apply lightmaps to albedo and generate final shaded surface vec3 finalComposite = final.sunlight * 0.9f * 1.5f * sunlightMult //Add direct sunlight + final.skylight * 0.03f //Add ambient skylight + final.nolight * 0.00003f //Add base ambient light //+ final.bouncedSunlight * 0.005f * sunlightMult //Add fake bounced sunlight + final.scatteredSunlight * 0.02f * (1.0f - sunlightMult) //Add fake scattered sunlight //+ final.scatteredUpLight * 0.0015f * sunlightMult + final.torchlight * 2.0f * TORCHLIGHT_BRIGHTNESS //Add light coming from emissive blocks + final.glow.lava * 1.6f * TORCHLIGHT_BRIGHTNESS + final.glow.glowstone * 1.1f * TORCHLIGHT_BRIGHTNESS + final.glow.fire * 0.025f * TORCHLIGHT_BRIGHTNESS + final.glow.torch * 0.15f * TORCHLIGHT_BRIGHTNESS + final.heldLight * 0.05f * TORCHLIGHT_BRIGHTNESS ; delta.rgb *= mix(vec3(1.0), vec3(0.1, 0.3, 1.0) * 1.0, surface.mask.water); //Apply sky to final composite surface.sky.albedo *= 6.0f; surface.sky.albedo = surface.sky.albedo * surface.sky.tintColor + surface.sky.sunglow + surface.sky.sunSpot; //DoNightEye(surface.sky.albedo); finalComposite += surface.sky.albedo; //Add sky to final image finalComposite += delta.rgb * sunlightMult * 1.4; //if eye is in water, do underwater fog if (isEyeInWater > 0) { finalComposite *= 9.0; //CalculateUnderwaterFog(surface, finalComposite); } |
설명
vec3 finalComposite = final.sunlight * 0.9f * 1.5f * sunlightMult //Add direct sunlight
|
앞에는 햇빛의 밝기 뒤에는 다중으로 적용되는 햇빛의 밝기 입니다.
+ final.skylight * 0.03f //Add ambient skylight + final.nolight * 0.00003f //Add base ambient light //+ final.bouncedSunlight * 0.005f * sunlightMult //Add fake bounced sunlight + final.scatteredSunlight * 0.02f * (1.0f - sunlightMult) |
- 위에서 부터 추가되는 하늘의 밝기
- 기본밝기(중요)
- 추가되는 햇빛의 밝기
- 흩어 지는 빛의 밝기
+ final.nolight * 0.00003f //Add base ambient light
여기가 제일 중요한데 모든 밝기에 추가되는 수치이며 주위에 광원이 하나도 없을때의 밝기입니다.
추천 값은 0.007f
이를 너무 높게 설정하면 동굴에 들어 갔을때 주위가 엄청 차가워 보인다.
//+ final.scatteredUpLight * 0.0015f * sunlightMult
+ final.torchlight * 2.0f * TORCHLIGHT_BRIGHTNESS //Add light coming from emissiv ; |
e blocks
+ final.glow.lava * 1.6f * TORCHLIGHT_BRIGHTNESS + final.glow.glowstone * 1.1f * TORCHLIGHT_BRIGHTNESS + final.glow.fire * 0.025f * TORCHLIGHT_BRIGHTNESS + final.glow.torch * 0.15f * TORCHLIGHT_BRIGHTNESS + final.heldLight * 0.05f * TORCHLIGHT_BRIGHTNESS |
위에서 부터 용암의 밝기, 발광석 밝기, 불 밝기, 횃불 밝기, 손에 들고있는 광원의 밝기 입니다.
2.3. 물 색깔 설정
출처
- composite1.fsh 파일을 엽니다.
2.여기를 찾습니다.
// vec3 waterFogColor = vec3(1.0, 1.0, 0.1); //murky water
// vec3 waterFogColor = vec3(0.2, 0.95, 0.0) * 1.0; //green water // vec3 waterFogColor = vec3(0.4, 0.95, 0.05) * 2.0; //green water // vec3 waterFogColor = vec3(0.7, 0.95, 0.00) * 0.75; //green water // vec3 waterFogColor = vec3(0.2, 0.95, 0.4) * 5.0; //green water // vec3 waterFogColor = vec3(0.2, 0.95, 1.0) * 1.0; //clear water vec3 waterFogColor = vec3(0.2, 1.3, 2.0) * 1.0; //clear water waterFogColor *= 0.008 * dot(vec3(0.33333), colorSunlight); waterFogColor *= (1.0 - rainStrength * 0.95); waterFogColor *= isEyeInWater * 2.0 + 1.0; |
깨끗한 물부분이고 위에는 바이옴 별 물색깔이다.
// vec3 waterFogColor = vec3(0.2, 0.95, 1.0) * 1.0; //clear water
vec3 waterFogColor = vec3(0.2, 1.3, 2.0) * 1.0; //clear water waterFogColor *= 0.008 * dot(vec3(0.33333), colorSunlight); |
추천은 이렇게
// vec3 waterFogColor = vec3(0.2, 0.95, 1.0) * 1.0; //clear water
vec3 waterFogColor = vec3(0.2, 1.4, 2.0) * 0.75; //clear water waterFogColor *= 0.008 * dot(vec3(0.33333), colorSunlight); |
[1] 다운로드 시기나 쉐이더 버전별로 들어가는 줄의 수가 모두 다르다.