#version 440 out vec4 FragColors; in vec3 reflectDir; in vec3 refractDir_R; in vec3 refractDir_G; in vec3 refractDir_B; in float reflectFactor; uniform bool DrawSkyBox; uniform samplerCube CubeMapTex; void main() { vec4 reflectColor = texture(CubeMapTex, reflectDir); if (DrawSkyBox == true) FragColors = reflectColor; else { float refractColor_R = texture(CubeMapTex, refractDir_R).r; float refractColor_G = texture(CubeMapTex, refractDir_G).g; float refractColor_B = texture(CubeMapTex, refractDir_B).b; vec4 refractColor = vec4(refractColor_R, refractColor_G, refractColor_B, 1); FragColors = vec4(mix(refractColor, reflectColor, reflectFactor)); } }