// ====================================================================== // inputs: // // r11.w = distance squared from vertex to camera // // outputs: // // oFog // // ====================================================================== // ---------------------------------------------------------------------- // calculate fog // (distance)^2 * (density)^2 = (distance * density)^2 mul r0.w, r11.w, cFog.w // log2(e) * (distance * density)^2 mul r0.w, cLog2e, r0.w // 2^(log2(e) * (distance * density)^2) = (2^log2(e))^((distance * density)^2) = e^((distance * density)^2) exp r0.w, r0.w // 1 / (e^((distance * density)^2)) rcp oFog, r0.w