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

Объёмный свет / объёмный туман (решено) (5 стр)

Страницы: 14 5 6 7 8 Следующая »
#60
4:47, 20 янв 2024

"А ларчик просто открывался". Гиперболоид! Цена вопроса - два вызова distance(), ну еще и третий для затухания луча по отдалению от источника.

Код для shadertoy:

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{

    vec2 p = fragCoord/iResolution.xy;
    p.x *= iResolution.x/iResolution.y;

    // ----------------------------------

    float d = 0.1; // + 0.3*fract(iTime*1.0);

    // 0.0 - 90 deg
    // 0.7 - 45 deg
    // 0.96 - 15 deg
    // 1.0 - 0 deg
    const float cone_halfwidth = 0.6;
    
    // 1.0 - sharp
    // 1.5 - smooth
    // 1.9 - smoother
    // ...
    
    const float cone_edge_smooth_factor = 1.8;

    vec2 c1 = vec2(0.3, 0.3);   
    vec2 dir = normalize(vec2(1.0, 0.5));
    vec2 c2 = c1 - d*dir;    
    
    // ------------------------------
    
    
    // Move by mouse
    /*
    c2 = iMouse.xy / iResolution.xy;
    d = distance(c1, c2);
    */
    
    
    float r_scale = smoothstep(d*cone_halfwidth, d*cone_halfwidth*cone_edge_smooth_factor, distance(p, c2) - distance(p, c1));
    
    float radius = 1.2;
    r_scale = r_scale * smoothstep(radius*1.1, radius*0.05, distance(p, c1));
    


    //r_scale = pow(r_scale, 0.1); // <--- shape test
    
    // -----------------------------------
    
    float o = r_scale; 
    fragColor = vec4(o, o, o, 1.0);
    
    if (distance(p, c1) < 0.02) {
        fragColor = vec4(1.0, 0.0, 0.0, 1.0);
    }
    if (distance(p, c2) < 0.02) {
        fragColor = vec4(1.0, 1.0, 0.0, 1.0);
    }
    
}
#61
10:32, 20 янв 2024

vec2 dir = normalize(vec2(1.0, 0.5));

Ты серьёзно ? Зачем normalize ?

float d = 0.1; 

    vec2 c1 = vec2(0.3, 0.3);   
    vec2 dir = normalize(vec2(1.0, 0.5));
    vec2 c2 = c1 - d*dir; 

Суслик бы тебя, за такое забанил бы :)))

vec2 c2 = vec2(0.3, 0.3)-vec2(0.08944,0.04472);

Скрин давай как вышло.
Или ссылку на shadertoy.

#62
11:45, 20 янв 2024

ronniko
> Ты серьёзно ? Зачем normalize ?
Чтобы не считать руками. Это ж тестовый код для экспериментов. В настоящем проекте в шейдере вообще нет этих строк, фокальные точки считаются заранее и передаются в шейдер уже готовые (как и всё остальное, что можно заранее рассчитать).

> Скрин давай как вышло.
Cone light - новый | Объёмный свет / объёмный туман (решено)

#63
11:50, 20 янв 2024

Прикольно.
У тебя как point light + псевдо объем.

#64
12:00, 20 янв 2024

Объём не псевдо, он настоящий. Это половинка настоящего двухполостного гиперболоида.

#65
12:20, 20 янв 2024

Гиперболоид инженера Гарина (1965) :)

#66
10:50, 28 янв 2024

Я сделяль.

120 fps нативно на Oculus Quest 2 (Snapdragon XR2 и 1440x1520 в каждый глаз). В кадре может быть до 4 объёмных конусов + 5 объёмных сфер (либо 8 конусов, либо 3 конуса и 8 сфер). Сейчас на сцене 3 конуса и 0 сфер. Объёмы настоящие, в них можно поместить камеру.

Volumetric - 1 | Объёмный свет / объёмный туман (решено)

Volumetric - 2 | Объёмный свет / объёмный туман (решено)

#67
21:16, 28 янв 2024

romanshuvalov
Очень достойно выглядит! Читал вашу ветку от начала, ради интереса. Много проделанной работы. Очень хотелось бы увидеть как же выглядит объемный свет с камерой изнутри – анимацию или хотя бы скриншот. А насколько Snapdragon XR отличается от обычных мобильных чипов в производителтности, если говорить обобщенно, а не исходя из узкой специализации?

#68
7:21, 29 янв 2024

Riffmach
> как же выглядит объемный свет с камерой изнутри
Просто всё светлое. Представь, что находишься в облаке дыма.

> А насколько Snapdragon XR отличается от обычных мобильных чипов в производителтности
XR2 по грубым прикидкам сопоставим с GTX1050, но с сильно низким филлрейтом.

#69
11:18, 29 янв 2024

А бывает shadertoy для 3д, чтобы удобно шейдером поделиться? А то меня уже спрашивают.

#70
14:25, 29 янв 2024

romanshuvalov
А что с клиппингом сквозь стены? Дептх препасс делаешь?

#71
16:07, 29 янв 2024

Battle Angel Alita
> А что с клиппингом сквозь стены? Дептх препасс делаешь?
Если я правильно понял, то это решалось еще с тех времён, когда появился Z буфер, отсечением перекрываемых пикселей при филлинге, но это не точно.

#72
16:13, 29 янв 2024

Battle Angel Alita
У меня есть depth пикселя и приблизительный depth точки внутри объема. Smoothstep-аю их и получаю мягкий софтовый depth test без дополнительных проходов. Возможно просачивание света сквозь очень тонкие стены, если расположить их рядом с источником.

P. S. Повторяю, чтоб не потерялось: А бывает shadertoy для 3д, чтобы удобно шейдером поделиться? А то меня уже спрашивают.

#73
18:03, 29 янв 2024

romanshuvalov
Круто теперь тоже самое для омни лайтов

#74
18:16, 29 янв 2024

romanshuvalov
> P. S. Повторяю, чтоб не потерялось: А бывает shadertoy для 3д, чтобы удобно
> шейдером поделиться? А то меня уже спрашивают.
Звучит как идея для стартапа :)

Страницы: 14 5 6 7 8 Следующая »
ПрограммированиеФорумГрафика

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