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

ds pbr + reflections (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
9:49, 23 авг. 2021

Suslik
Спс


#31
(Правка: 29 авг. 2021, 22:04) 15:34, 28 авг. 2021

а вот когда куб префильтрую. там получается roughness = 1 на максимальном лоде ?
в некоторой статье допустим мипов всего 7, а автор считает для 5 - и уже получается roughness = 1 на 5 лоде

Или тут просто на глаз максимальный лод при максимальной roughness  просто подобрать из того что получилось и всё

=====================
а это нормально, что при

float metallic = 0;
  float roughness = 0;

все-равно видно отражения? В уе4 так же... просто к дифузу еще добавляется отражение..
===========================
тут еще говорят что для ssr неправильно делать просто джитер рефл вектора по нойзу.
В результате получилось чтото типа такого...

нормаль и позиция во viewSpace..

// 3d noise
#define Scale vec3(0.8)
#define K 19.19
vec3 hash(vec3 a)
{
    a = fract(a * Scale);
    a += dot(a, a.yxz + K);
    return fract((a.xxy + a.yxx)*a.zyx);
}
float roughness = 0.5;
  vec3 jitter = hash(position);  // 3d noise random value
  vec2 Xi = jitter.xy;
  float BRDFBias = 0.7;
    Xi.y = mix(Xi.y, 0.0, BRDFBias);  
  vec3 H = ImportanceSampleGGX(Xi,normalize(normal),roughness);  // normalized result
  vec3 reflectionDirection = normalize(reflect(normalize(position), H.xyz));

vec4 ssr = ReflectedColor(position, reflectionDirection,coords);
shot000 | ds pbr + reflections

Правильно??? И что - теперь просто обычным блюром пройтись 1 раз по результату?

#32
(Правка: 13:30) 13:29, 3 сен. 2021

Чтобы шум убрать и отставание рефлекшена от камеры - темпорал фильтер надо делать???

по стохастику - там есть ресолв пасс. Он как-то влияет на эти 2 проблемы? Без него вообще можно обойтись? Просто ssr->temporal->blur?

шум переделал на анимированный как велят отсы, видимо , чтобы темпорал его задетектил

#33
13:37, 3 сен. 2021

The Andreyp
ясное дело, одного семпла не хватит. делай усреднение по нескольким семплам, далее усреднение между пикселями (через блюр) и далее усреднение по времени (через репроекцию).

#34
15:44, 3 сен. 2021

А еще сверху паралкс кубмапу!

#35
(Правка: 22:18) 22:17, 9 сен. 2021

Не пойму - темпорал работает или нет. Шум уменьшается и отражение колонны на полу вроде меньше разъъъежжается с реальностью

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры
#36
22:19, 9 сен. 2021

lookid
да походу без этих кубмап проб не обойдется....

#37
(Правка: 3:46) 3:45, 11 сен. 2021

The Andreyp
сэмплишь не центр текселя скорее всего, плюс для темпорального фильтра надо еще билинейную интерполяцию руками делать

#38
(Правка: 12:45) 11:01, 11 сен. 2021

MrOcelot
Центр.

void main() 
{
  ivec2 uvInt = (ivec2(gl_WorkGroupID.xy) * KERNEL_SIZE) + (ivec2(gl_LocalInvocationID.xy) - 1);  // gl_GlobalInvocationID = gl_WorkGroupID*gl_WorkGroupSize+gl_LocalInvocationID ????
  vec2 uv = clamp((uvInt.xy + 0.5) * ssrSize,0.0,1.0);
  uint groupIndex = gl_LocalInvocationID.y * (KERNEL_SIZE + 2) + gl_LocalInvocationID.x;
  vec4 current = texture(ScreenInput, uv, 0);

Ну кстати в темпорал пассе сделал так (uvInt.xy + 0.5) - шум еще уменьшился. Поспокойнее стала картинка. Видимо так правильнее в самом деле! Это CS

биллинеар
В туторе дд3дшном вроде пойнтно семплицца,потом пррсто блур

Еще когда камера летает , то отражения как-то испаряются ( как будто призраки) - видимо так тоже должно быть

#39
(Правка: 23:05) 19:56, 3 окт. 2021

что-то вышло ,но вцелом баги какие-то непонятные.
по пбр

vec3 fresnelSchlick(float cosTheta, vec3 F0)
{
    return F0 + (1.0 - F0) * pow(1.0 - cosTheta, 5.0);
} 

float hdv = max(dot(H, V), 0.0);
vec3 F    = fresnelSchlick(hdv, F0);         // spec dif lerp factor

vec3 kS = F;
vec3 kD = vec3(1.0) - kS;

выдает какую-то хню, когда в позиции камеры ставлю источник света
подозреваю что hdv > 1 , а F < 0.. Это вообще так и должно быть что ли?

shot000 | ds pbr + reflections

==============
если меняю форумулу на float hdv = clamp(dot(H, V), 0.0,1.0); то все нормально.

Кто сталкивался с таким??????????? Че не так,не пойму.

#40
15:02, 13 окт. 2021

Ап

#41
17:02, 13 окт. 2021

> pow(1.0 - cosTheta, 5.0)

float saturate(float val)
{
  return clamp(val, 0.0f, 1.0f);
}
//...
pow(saturate(1.0 - cosTheta), 5.0)

#42
22:11, 13 окт. 2021

Suslik
спасибо ,так думаю правильнее

еще заметил что при мелком рафнесе  0.01, тоже какие-то артефакты, в виде бегающих черных пикселей. Не знаю норма для этой модели или нет...

#43
(Правка: 22:39) 22:38, 13 окт. 2021

The Andreyp

Скорее всего v, либо h не нормализованы. V если передается из вершинного шейдера, то при интерполяции нормализация вектора могла слететь.

#44
(Правка: 11:32) 11:31, 14 окт. 2021

0xc0de
Нормализованы в пс перед формулой.  У меня дл

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика