Войти
ПрограммированиеФорумГрафика

Атмосфера: вид из космоса и с поверхности (12 стр)

Страницы: 17 8 9 10 11 12
#165
17:50, 16 июня 2014

Кто использовал брунетоновскую атмосферу, не сталкивались ли вы с багом на нвидиях? Начиная примерно с GTX 460, текстуры скаттеринга не генерируются правильно, планета рендерится чёрной, если посмотреть значения в текстурах - там #IND. После долгого копания, нашёл место, в котором можно исправить это. В шейдере irradianceN.glsl надо заменить этот код:

            if (first == 1.0) {
                // first iteration is special because Rayleigh and Mie were stored separately,
                // without the phase functions factors; they must be reintroduced here
                float pr1 = phaseFunctionR(nu);
                float pm1 = phaseFunctionM(nu);
                vec3 ray1 = texture4D(deltaSRSampler, r, w.z, muS, nu).rgb;
                vec3 mie1 = texture4D(deltaSMSampler, r, w.z, muS, nu).rgb;
                result += (ray1 * pr1 + mie1 * pm1) * w.z * dw;
            } else {
                result += texture4D(deltaSRSampler, r, w.z, muS, nu).rgb * w.z * dw;
            }

на этот:

            if (first == 1.0) {
                // first iteration is special because Rayleigh and Mie were stored separately,
                // without the phase functions factors; they must be reintroduced here
                float pr1 = phaseFunctionR(nu);
                float pm1 = phaseFunctionM(nu);
                vec3 ray1 = texture4D(deltaSRSampler, r, w.z, muS, nu).rgb;
                vec3 mie1 = texture4D(deltaSMSampler, r, w.z, muS, nu).rgb;
                result += max(ray1 * pr1 + mie1 * pm1, 0.0) * w.z * dw;
            } else {
                result += max(texture4D(deltaSRSampler, r, w.z, muS, nu).rgb, 0.0) * w.z * dw;
            }

Т.е. сделать так, чтобы в result приплюсовывались только неотрицательные значения. При этом странно то, что сэмплеры deltaSRSampler и deltaSMSampler не содержат отрицательных или #IND значений (а pr1 и pm1 и так всегда положительные). Если сравнить рендер планеты со старыми текстурами скаттеринга, загруженными из файла, и вновь предрассчитанными с этим фиксом, отличий вроде нет. В общем, я думаю, это баг в дровах нвидии.


#166
19:34, 16 июня 2014

Neptune
Хотел написать, что нормально всё, но получается по факту, что я давно уже генерацией не пользовался. Помню, что на радеоне 5450 оно вообще висло.

Страницы: 17 8 9 10 11 12
ПрограммированиеФорумГрафика

Тема в архиве.