Перейти к контенту

Рекомендуемые сообщения

 

Ещё кое-что о ребристости.

 Добавляем блюр в лучи

#ifdef SS_BLUR

float blur_delta = 2 * (.5f/1024.f);

out_color += (tex2Dlod(s_image, float4(tc + blur_delta,0,0)) + tex2Dlod(s_image, float4(tc - blur_delta,0,0))) * (1.f/2.f) * SS_BLEND_FACTOR;

#else

out_color += float3(0.3, 0.3, 0.3);

#endif

 

 

 Anonim

подскажи в какой шейдер добавлять этот блюр? В ogse_sunshafts.h ? И после каких строк?

@KD87, не сочти за наглость)) Я только начинаю разбираться в игровой графике и в шейдерах, потому, если тебе не составит труда, может подтолкнешь хотя бы примерно где копать(за сан флары знаю, уже даже обдумывал этот вариант), а то не пойму я, как рендерить квады эти(рисовать дерт для каждой лампы???), и мб есть где за это почитать? Мб есть вариант попроще и более правильный? Или твой вариант и является правильным и рациональным? Где-то видел, что можно привязать к блюму от лампочек, эффект будет похуже чем из расчета позиций источников освещения(наверное и имелось ввиду то, что ты сказал), но, тоже более-менее нормальный.

 

ЗЫ прошу сильно не бить, мб и бредятину понаписывал)))

  • Нравится 1
out_color += float3(0.3, 0.3, 0.3);

Эту строку, замени на

#ifdef SS_BLUR

float blur_delta = 2 * (.5f/1024.f);

out_color += (tex2Dlod(s_image, float4(tc + blur_delta,0,0)) + tex2Dlod(s_image, float4(tc - blur_delta,0,0))) * (1.f/2.f) * SS_BLEND_FACTOR;

#else

out_color += float3(0.3, 0.3, 0.3);

#endif

 
И добавь соответствующие дефайны, можешь в начало фала, а можешь в конфиг файл
 
#define  SS_BLUR
#define  SS_BLEND_FACTOR 0.9
Изменено пользователем Anonim
  • Спасибо 1

Anonim

С этим есть проблема - у меня ogse_sunshafts.h выглядит немного по другому, вот содержимое 

/* Volumetric Sunlights aka GodRays aka Sunshafts

made by K.D. (OGSE team)

used papers:

1) GPU Gems 3. Volumetric Light Scattering as a Post-Process (Kenny Mitchell)

2) –еализаци¤ процессора эффектов постобработки. „асть 2 - —оздание пост-эффектов. (¬ладимир ƒь¤чков ЂNikola Teslaї)

3) Crysis shaders :)*/

 

#ifndef OGSE_SUNSHAFTS_H

#define OGSE_SUNSHAFTS_H

#include "common.h"

#ifndef SS_QUALITY

#define SS_MAX_SAMPLES int(1)

#else

#if SS_QUALITY==1

#define SS_MAX_SAMPLES int(30)

#else

#if SS_QUALITY==2

#define SS_MAX_SAMPLES int(70)

#else

#if SS_QUALITY==3

#define SS_MAX_SAMPLES int(250)

#endif

#endif

#endif

#endif

// #define SS_FARPLANE 180 // менять не стоит

#define SS_FARPLANE float(180.0)

uniform float4 common_params2;

uniform sampler2D s_jitter_0; // стандартный шум, 64x64

uniform sampler2D s_jitter_1; // стандартный шум, 64x64

uniform sampler2D s_jitter_5; // шум высокого разрешени¤, 1024x1024

float normalize_depth(float depth)

{

return (saturate(depth/SS_FARPLANE));

}

float3 blend_soft_light(float3 a, float3 B)

{

float3 c = 2 * a * b + a * a * (1 - 2 * B);

float3 d = sqrt(a) * (2 * b - 1) + 2 * a * (1 - B);

return ( b < 0.5 )? c : d;

}

float3 sunshafts(float2 tc, float3 init_color)

{

// dist to the sun

float sun_dist = SS_FARPLANE / (sqrt(1 - L_sun_dir_w.y * L_sun_dir_w.y));

// sun pos

float3 sun_pos_world = sun_dist*L_sun_dir_w + eye_position;

float4 sun_pos_projected = mul(m_VP, float4(sun_pos_world, 1));

float4 sun_pos_screen = convert_to_screen_space(sun_pos_projected)/sun_pos_projected.w;

// sun-pixel vector

float2 sun_vec_screen = sun_pos_screen.xy - tc;

// calculate filtering effect. sunshafts must appear only when looking in the sun dir

float angle_cos = dot(-eye_direction, normalize(L_sun_dir_w));

float ray_fade = saturate(saturate(angle_cos)*(1 - saturate(dot(sun_vec_screen, sun_vec_screen)))*saturate(length(sun_vec_screen)));

float2 init_tc = tc;

 

float3 pos = tex2D(s_position, tc);

float dep = pos.z;

float depth = normalize_depth(dep);

float mask = (saturate(angle_cos*0.1 + 0.9) + depth - 0.99999) * SS_BLEND_FACTOR;

// adjust sampling

sun_vec_screen *= angle_cos * SS_DENSITY / SS_MAX_SAMPLES;

 

// sampling image along ray

float3 accum = 0;

float depth_accum = 0;

for (int i = 0; i < SS_MAX_SAMPLES; i++)

{

tc += sun_vec_screen;

depth = normalize_depth(tex2D(s_position, tc).z);

accum += depth * (1 - i / SS_MAX_SAMPLES);

depth_accum += saturate(1 - depth*1000);

}

accum *= saturate(depth_accum/SS_MAX_SAMPLES*5);

#ifdef SS_DUST

float dust_size = 8/SS_DUST_SIZE;

float3 jit;

float2 jtc = init_tc;

float2 sun_dir_e = L_sun_dir_e.xy;

sun_dir_e /= sin(common_params2.x);

sun_dir_e *= common_params2.y;

jtc.x += sun_dir_e.x;

jtc.y -= sun_dir_e.y;

jtc.x = (jtc.x > 1.0)?(jtc.x-1.0):jtc.x;

jtc.y = (jtc.y < 0.0)?(1.0-jtc.y):jtc.y;

jit.x = tex2D(s_jitter_0, float2(jtc.x, jtc.y + timers.x*0.01*SS_DUST_SPEED)*dust_size).x;

jit.y = tex2D(s_jitter_1, float2(jtc.x + timers.x*0.01*SS_DUST_SPEED, jtc.y)*dust_size).y;

jit.z = tex2D(s_jitter_5, jtc).x;

jit.z = saturate(jit.z + SS_DUST_DENSITY - 1);

float3 dust = saturate(float3(jit.x, jit.x, jit.x)*float3(jit.y, jit.y, jit.y)*float3(jit.z, jit.z, jit.z));

float len = length(dust);

dust *= SS_DUST_INTENSITY;

dust = lerp(0, dust, (1 - saturate(dep * 0.2)) * (1 - saturate((0.001 - dep)*10000.0)));

dust += float3(1,1,1);

#else

float3 dust = float3(1,1,1);

#endif

 

// watch some magic: if sun is occluded by terrain or some buildings, sunshafts must be eliminated. Otherwise image is terrible.

accum *= 2 * ray_fade / SS_MAX_SAMPLES * dust;// * (1 - mat);

// blending

float3 out_color = init_color + accum * L_sun_color * (1.0 - init_color);

out_color = blend_soft_light(out_color, L_sun_color * mask * -0.1 + 0.6) - init_color;

return out_color;

}

float3 calc_sunshafts(float2 tc, float3 init_color) {

#ifndef SS_QUALITY

return 0;

#else

return sunshafts(tc, init_color);

#endif

}

#endif

 

в общем такой строчки нет , я пытался сделать по вашему примеру, но тогда саншафты совсем исчезают... Подскажите как мне лучше сделать ?

Блюр не для этих саншафтов, а для этих:

 

http://www.amk-team.ru/forum/index.php?showtopic=12673&p=902084

 

 

Адаптация шейдеров RMA+Shadows Addon к шейдерам KD87 (вода,частицы,лучи,волны). Камблю Фантомная зона :P

 

https://yadi.sk/d/QziIA9LZdh3yj

Изменено пользователем Dennis_Chikin

 

 

Because R2 doesn't support glow for lights.

@DDamian724, this not true. It`s possible. I'll write to PersonalMessage how to make it work. 

И тут мелькал вопрос о сквозных прицелах. Думаю вам стоит посмотреть тут

  • Нравится 1

Этот эффект уже давно есть в доступе. Версия 1.2.

Изменено пользователем Anonim
  • Согласен 1

 

 

this not true

Каким образом на Р2 заставить заработать глоу так же, как на Р1? Человек, очевидно, спрашивает, о назначении глоу в спавне/сдк.


 

 

R1 have lens flare for lamp, R2 don't have.

Wow! I'm a test this shaders 


Also, its possible to release only flares? You shader is good, i'm try to use in my own mod. Permissions is must have?

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...