w23 / xash3d-fwgs

Vulkan Ray Tracing fork of Xash3D FWGS engine. Intended to be merged into master at some point in the future.
163 stars 16 forks source link

Weird black areas at grazing angles for studio models #48

Open w23 opened 3 years ago

w23 commented 3 years ago

Most likely culprit is:

ISeeStores
чёрные кромки - это отражения первичных лучей от треугольников по интерполированной нормали под плоскость треугольника (т.е. dot(normal, dir) < 0, где normal - это геометрическая нормаль) 
w23 commented 3 years ago

Try setting geometryNormal to triangle normal instead of vertex normal

w23 commented 3 years ago

geometryNormal fix failed. It only "helps" by disabling GI bounces sampling underneath the geometry, which was not the main culprit here.

Majority of our black borders were caused by:

w23 commented 3 years ago

Quick googling shows that these papers might be relevant:

tomilov commented 3 years ago

Процитирую себя (пару лет назад решил):

Я решил видозависимой корректировкой нормалей — на вид красиво (для цилиндра из бруска с прямоугольным сечением тестировал). В случае растеризации — нужно иметь доступ к аттрибутам вершин в шейдере (есть расширение вендора NV_fragment_shader_barycentric). И точку старта луча в координатах объекта (позицию камеры):

void clampNormal(inout VertexAttributes v, vec3 N/*geometric_local_normal*/)
{
    vec3 d = v.position - gl_ObjectRayOriginNV;
    vec3 r = d - 2.0 * dot(d, v.normal) * v.normal;
    float rN = dot(r, N);
    if (rN < 0.0) {
        r -= rN * N;
        v.normal = normalize(normalize(r) - normalize(d));
    }
}

Бамп конечно остаётся проблемой неразрешимой

0x4E69676874466F78 commented 3 years ago

https://github.com/w23/xash3d-fwgs/issues/33#issuecomment-922358031 изображение

0x4E69676874466F78 commented 3 years ago

https://github.com/w23/xash3d-fwgs/issues/33#issuecomment-932973331 изображение

0x4E69676874466F78 commented 1 year ago

Проблема снова проявилась при баунсах даже при тяжёлом сэмплировании. Она существует не только у студийных моделях, но и у брашей на которые натянуты материалы с картой нормали. Лучше всего это видно на test_material, вот на этих объектах: image Если подойти вплотную то мы видим характерный круг: image Если мы отойдём ровно вбок, то артефакт сместится: image Получается есть зависимостить от позиции камеры.

0x4E69676874466F78 commented 1 year ago

На de_dust2 можно увидеть такое:

Image Image Image Image Image

Вот эти чёрные полосы это оно самое. Не на всех гранях. На последнем скрине вообще не понятно почему на верхней части нет зато есть на нижней.