新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
基于Qt的OpenGL可編程管線學習(19)-霧-創(chuàng)新互聯(lián)
霧的效果,這里只對牛頭的模型進行了霧化,如下圖所示
距離模型越近,越清晰
1、線性霧
fragment shader中實現(xiàn)效果,
參數(shù)為眼睛到平面的距離,需要傳入霧的起始位置和終止位置
float calcFogLinear(float distance) { float fogAlpha = (distance - M_FogStart) / (M_FogEnd - M_FogStart); fogAlpha = 1.0 - clamp(fogAlpha, 0.0, 1.0); return fogAlpha; }
2、EXP霧
fragment shader中實現(xiàn),需要傳入霧的濃度
float calcFogExp(float distance) { float fogAlpha = exp(-(distance * M_FogDensity)); fogAlpha = clamp(fogAlpha, 0.0, 1.0); return fogAlpha; }
3、EXPX霧
fragment shader中實現(xiàn),需要出入霧的濃度和梯度
float calcFogExpX(float distance) { float fogAlpha = exp(-pow(distance * M_FogDensity, M_FogGradiant)); fogAlpha = clamp(fogAlpha, 0.0, 1.0); return fogAlpha; }
眼睛的位置計算
M_EyesPos = V * wordPos;
fragment shader
// 計算霧的強度 // 線性計算 //float fogAlpha = calcFogLinear(abs(M_EyesPos.z / M_EyesPos.w)); // EXP方式計算 //float fogAlpha = calcFogExp(abs(M_EyesPos.z / M_EyesPos.w)); // EXPX方式計算 float fogAlpha = calcFogExpX(abs(M_EyesPos.z / M_EyesPos.w)); vec4 lightColor = texture2D(U_MainTexture, M_coord) * ambientColor + texture2D(U_MainTexture, M_coord) * diffuseColor;// + specularColor; gl_FragColor = mix(M_FogColor, lightColor, fogAlpha);
CPU端霧的設置
// 設置霧 float nFogStart = 1.0f; float nFogEnd = 500.0f; float nFogColor[] = {41.0f / 255.0f, 71.0f / 255.0f, 121.0f / 255.0f, 1.0f}; float nFogDensity = 0.008f; // 霧的強度 float nFogGradiant = 2.0f; // 霧的衰減梯度 OpenGLCore->glUniform1f(m_Mode2->getLocationHandle("M_FogStart"), nFogStart); OpenGLCore->glUniform1f(m_Mode2->getLocationHandle("M_FogEnd"), nFogEnd); OpenGLCore->glUniform4fv(m_Mode2->getLocationHandle("M_FogColor"), 1, nFogColor); OpenGLCore->glUniform1f(m_Mode2->getLocationHandle("M_FogDensity"), nFogDensity); OpenGLCore->glUniform1f(m_Mode2->getLocationHandle("M_FogGradiant"), nFogGradiant);
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
新聞標題:基于Qt的OpenGL可編程管線學習(19)-霧-創(chuàng)新互聯(lián)
文章路徑:http://www.dlmjj.cn/article/edjsh.html