📌 Alpha Blending & Multi-Texturing
- Alpha Blending
- 투명한 오브젝트를 렌더링하는 방법이다.
- 단색이 아니라 오브젝트 자체가 가지고 있는 컬러와 뒤에 있는 다른 오브젝트의 컬러를 일정 비율로 혼합하여 렌더링한다.
- Multi-Texturing
- 두개의 서로 다른 Texture 를 Blending하여 새로운 텍스처를 만든다.
Alpha Blending
void glBlendFunc(GLenum sfactor, GLenum dfactor);
void glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
void glBlendEquation(GLenum mode);
void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
- 현실의 물리 법칙과 다르게 동작한다.
- Z-Buffer Algorithm을 사용하면 뒤에있는 오브젝트가 누락되므로 Painter’s Algorithm을 사용해야한다.
- 불투명한 Polygon은 따로 처리한다.
Multi-Texturing
Fragment Shader
precision mediump float;
uniform sampler2D s_baseMap;
uniform sampler2D s_lightMap;
varying vec2 v_texCoord;
void main()
{
vec4 baseColor;
vec4 lightColor;
baseColor = texture2D(s_baseMap, v_texCoord);
lightColor = texture2D(s_lightMap, v_texCoord);
glFragColor = baseColor * (lightColor + 0.25);
}
OpenGL Code
GLuint baseMapLoac, baseMapTexId, lightMapLoc, lightMapTexId;
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, baseMapTexId);
glUniform1i(baseMapLoc, 0);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, lightMapTexId);
glUniform1i(lightMapLoc, 1);