ФлеймФорумПрограммирование

Общие вопросы по программированию графония. (233 стр)

Страницы: 1232 233 234 235241 Следующая »
#3480
16:06, 15 мая 2025

Dmitry_Milk
Про возню ЗыМастера с УЭ, ты же ему отвечал

#3481
18:00, 15 мая 2025

Рендерферма кроликов, а, ну так он привел аргумент, зачем он хотел три отдельных угла - чтоб иметь возможность вернуть исходное состояние вращением трекбола. Без трех отдельных углов вернуться точно в исходное состояние можно только через undo.

#3482
11:38, 18 мая 2025

Можно ли сейчас посчитать свет в сцене прямо на гпу и в шейдере записать результат в текстуру? Свет простой, буквально n dot l плюс шедоумапы с PCF, может еще сферические гармоники если источников много.

Фбо не подойдет т.к нужно писать в текстуру по координатам относительно интерполированного UV в фрагменте

#3483
14:25, 19 мая 2025

Я просто не хотел софтрендер для такого писать, думал может на гпу можно уже)

#3484
16:29, 19 мая 2025

Можно, через какой-нибудь imageStore. Или можно через FBO в два прохода: сначала выводим {x, y, значение} в FBO, потом рендерим этот FBO как массив точек.

#3485
9:25, 20 мая 2025

https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html… -scale-factor
не очень понимаю как считается LOD текстуры

float2 dx = dFdx( uv );
float2 dy = dFdy( uv );
dx *= textureSize( tex, 0 ).x;
dy *= textureSize( tex, 0 ).y;

// вариант 1
float Pmax = Max( Length(dx), Length(dy) );

// вариант 2
float Px = Max( Abs(dx.x), Abs(dy.x) );
float Py = Max( Abs(dx.y), Abs(dy.y) );
float Pmax = Max( Px, Py );

float level = Log2( Pmax );

Обе версии отличаются от того, что расчитывается в textureQueryLod()

#3486
11:24, 20 мая 2025

Ну вот считается максимальное из изменений dx, dy на пиксель, а номер лода это двоичный логарифм.
Там разве есть строгая формула?

#3487
14:03, 20 мая 2025

1 frag / 2 deaths
Насколько я помню, там допускается произвольное приближение на усмотрение вендора, но не меньше чем Строгая Формула 1 и не больше чем Строгая Формула 2, ну и обязательно монотонная конечно же.

/A\
Попробуй ещё abs(dx)+abs(dy) — с плюсом вместо макса.

#3488
15:20, 20 мая 2025

Имбирная Ведьмочка
> Попробуй ещё abs(dx)+abs(dy) — с плюсом вместо макса.
пробовал, length() ближе всего к вендорскому

> там допускается произвольное приближение на усмотрение вендора
Такой формулировки я не нашел, но из документации об этом можно догадаться, там только диапазоны.
А я хотел сделать 1 в 1.

#3489
17:36, 20 мая 2025

}:+()___ [Smile]
О, спасибо большое, отличная идея юзануть вторую текстуру для мапы :)

#3490
(Правка: 17:50) 17:48, 20 мая 2025

monobogdan
> О, спасибо большое, отличная идея юзануть вторую текстуру для мапы :)
на гите есть проект который всё это делает, на opengl. Суть реализации у автора была в том что он рендерил сцену с позиции каждого треугольника и в несколько проходов получал неплохой запеченный свет.

нашел https://github.com/ands/lightmapper

#3491
18:08, 3 июня 2025

Насколько плохо строить PVS через окклюжн квери? Иными словами бьем мир на сетку, для каждой позиции в мире рендерим камеру 8 раз с поворотами на +45 градусов по Y и собираем инфу о числе фрагментов в отрендеренных объектах, если хоть с одного угла объект видим - значит видим с текущего сектора (объекты за спиной отсечет фрустум). Печем инфу в данные и затем делаем простейшую и дешевую проверку в рантайме.

Игра не предполагает вертикальный геймплей, так что по ней можно и не печь

#3492
(Правка: 11:25) 11:02, 14 июня 2025

Обычно сетку разбивают на octree AABB(Axis-Aligned Bounding-Box) для просчета ambient occlusion.
Можно ли разбивать сетку на сферы\boxes и не юзать octree AABB ?
Хочется сделать код проще , чем octree.
То есть сфера определённого радиуса и проверить какие треугольники сетки попали в эту сферу.
Или из-за сферы могут возникнуть проблемы с треугольниками ?

#3493
7:25, 17 июля 2025
+ Показать

из-за чего возникает такой эффект со светом? вот это белое вытянутое пятно. это из моего кода конечно, там все не правильно - но я раньше тыкал разные демо с deffered shading и forward+ - очень часто такой же эффект видел и там

#3494
(Правка: 8:00) 7:53, 17 июля 2025

war_zes
Спекуляр свет. Связан с нормалями и cameraPosition.

//vertex shader
// Calculate the position of the vertex in the world.
    worldPosition = mul(input.position, worldMatrix);

    // Determine the viewing direction based on the position of the camera and the position of the vertex in the world.
    output.viewDirection = cameraPosition.xyz - worldPosition.xyz;
//pixel shader и в opengl fragment shader
  
    // Invert the light direction for calculations.
    lightDir = -lightDirection;

        // Calculate the reflection vector based on the light intensity, normal vector, and light direction.
        reflection = normalize(2.0f * lightIntensity * input.normal - lightDir); 

The amount of specular light is then calculated using the reflection vector and the viewing direction. The smaller the angle between the viewer and the light source the greater the specular light reflection will be. The result is taken to the power of the specularPower value. The lower the specularPower value the greater the final effect is.

        // Determine the amount of specular light based on the reflection vector, viewing direction, and specular power.
        specular = pow(saturate(dot(reflection, normalize(input.viewDirection))), specularPower);
Страницы: 1232 233 234 235241 Следующая »
ФлеймФорумПрограммирование