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

KD87

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

@PlayMod, Если ты о ребристости, то тебе нужно увеличить кол-во семплов.

 

#define SSH_NUM_SAMPLES float(130)          // Quality. Higher is better. 32 is accebtable, 128 high quality (254 = max)

Изменено пользователем Anonim
  • Спасибо 2
  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

Нужно изменить кол-во семплов, чтобы не ребрились. Есесвенно на большое количество.

Поделиться этим сообщением


Ссылка на сообщение
gXdMo.jpg

 

 

#ifndef _SUN_SHAFTS
#define _SUN_SHAFTS
#include "common.h"

uniform float4 common_params2;
uniform sampler2D s_jitter_0;
uniform sampler2D s_jitter_1;
uniform sampler2D s_jitter_5;

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 calc_sunshafts(float2 tc, float3 init_color) {
#ifdef USE_SUN_SHAFTS
float3 out_color = float3(0,0,0);
float sun_dist = SS_FARPLANE / (sqrt(1 - L_sun_dir_w.y * L_sun_dir_w.y));
float4 sun_pos_projected = mul( m_VP, float4( sun_dist * L_sun_dir_w + eye_position, 1 ) );
float4 sun_pos_screen = convert_to_screen_space(sun_pos_projected)/sun_pos_projected.w;
float2 sun_vec_screen = sun_pos_screen.xy - tc;

float angle_cos = dot(-eye_direction, normalize(L_sun_dir_w));
float ray_fade = saturate(saturate(angle_cos)*(1 - saturate(sun_vec_screen))*saturate(length(sun_vec_screen)*1000));
float2 init_tc = tc;

float3 pos = tex2D(s_position, tc);
float dep = pos.z;
float mask = (saturate(angle_cos*0.1 + 0.9) + normalize_depth(pos.z) - 0.99999) * SS_DENSITY;
sun_vec_screen *= angle_cos * SS_DENSITY / SS_SAMPLES;
float depth_accum = 0;

for (float i = 0; i < SS_SAMPLES; i++) {
tc += sun_vec_screen;
out_color += float3(0.25, 0.25, 0.25);
depth_accum += saturate(1 - tex2D(s_position, tc).z*1000);
}
out_color *= saturate(depth_accum/SS_SAMPLES);

#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

out_color *= 2.0 * ray_fade / SS_SAMPLES * dust;
out_color = init_color + out_color * L_sun_color * (SS_INTENSITY - init_color);
out_color = blend_soft_light(out_color, L_sun_color * mask * -0.1 + 0.6) - init_color;
return out_color;
#else
return 0;
#endif
}
#endif

 

 

/////////////////////////////////////////////////////////////
// Саншафты ака GodRays
#define USE_SUN_SHAFTS // включить лучи от солнца
#define SS_FARPLANE 180 // менять не стоит
#define SS_DENSITY 0.7 // плотность семплов или длина лучей
#define SS_INTENSITY 0.45 // "заметность" лучей
#define SS_DUST // включить пыль в саншафтах
#define SS_DUST_SPEED float(0.4) // скорость частиц пыли
#define SS_DUST_INTENSITY float(4.0) // яркость пылинок
#define SS_DUST_DENSITY float(1.0) // плотность частиц пыли
#define SS_DUST_SIZE float(0.7) // размер пылинок

// Качество
#ifndef SS_QUALITY
#define SS_SAMPLES int(0) // кол-во семплов для "откл"
#else
#if SS_QUALITY==1
#define SS_SAMPLES int(50) // кол-во семплов для "низко"
#else
#if SS_QUALITY==2
#define SS_SAMPLES int(60) // кол-во семплов для "средне"
#else
#if SS_QUALITY==3
#define SS_SAMPLES int(70) // кол-во семплов для "высоко"
#endif
#endif
#endif
#endif

 

 

Делайте копи-паст в свои файлы с заменой.

Изменено пользователем Anonim
  • Спасибо 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

 


eIkqr.jpg

 

Изменено пользователем Anonim
  • Спасибо 1
  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение

 

 

Киньте мануал по шейдерам в сталкере.

Ты серьёзно?

  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение

Зачем его комбинировать с блумом?

 

Вот пример на ТЧ.

 

#ifdef USE_LENS_DIRT
float3 lens_dirt = (pp_sunshafts * tex2D(sampler_dirt, center));
img += (lens_dirt * 2);
#endif
 
Эффект сам по себе простой - делаешь текстуру, в любом канале делаешь "пятна" по принципу "чем белее, тем лучше видно".
 
Вот и весь ленс дёрт.
Изменено пользователем Anonim

Поделиться этим сообщением


Ссылка на сообщение
оно не только от солнечных лучшей будет проявляться?

С чего бы это? Если указаны лучи, значит будет в лучах, но так как лучи падают от солнца... Дальше можно додумать.

 

Возьми мой вариант и замени pp_sunshafts на другой световой эффект который у тебя есть. Вот и всё.

 

sampler_dirt - имя семплера

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

Поделиться этим сообщением


Ссылка на сообщение

 

 

Я реализовываю это на движке ЗП и правлю его сам, потому имя семплера у меня s_lens_dirt

Я не навязывал тебе имя своего  :unsure:. Я просто пояснил, чтобы тебе было легче.

Поделиться этим сообщением


Ссылка на сообщение
Блюм же как бы идет от них, соответственно это тоже эффект освещения, потому наверное имеет смысл на него и навешивать Lens Dirt

Да, смысл есть, но если переборщить с блюмом эффект будет появлятся от пересвеченной стены. Так что тут нужно аккуратно.

am4i8.jpg

 

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

Поделиться этим сообщением


Ссылка на сообщение

@PlayMod, Правь движок. Ну или жди тройку ОГСЕ.

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

Поделиться этим сообщением


Ссылка на сообщение

@tatarinrafa, Движок нужно править, а именно добавить новый вид семплера для капель на стекле. Но в Рентген расширениях есть правка по добавлению своих семплеров в combine_2_xxx.

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

Поделиться этим сообщением


Ссылка на сообщение
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

Поделиться этим сообщением


Ссылка на сообщение

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

 

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

 

 

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

 

https://yadi.sk/d/QziIA9LZdh3yj

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

Поделиться этим сообщением


Ссылка на сообщение

@DDamian724Perhaps you meant lens dirt?  :grin2:

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

Поделиться этим сообщением


Ссылка на сообщение

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

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

Поделиться этим сообщением


Ссылка на сообщение

@DDamian724, To your notice.

 

Shaders version is not yet final ;) .

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

Поделиться этим сообщением


Ссылка на сообщение
1) accum_base.ps ничем не отличается от оригинала. Аналогично не отличаются _все_ шейдеры accum_***, а также файлы bloom_luminance_2, bloom_filter, lmape.ps. 2) bloom_luminance_3.ps по факту ничем не отличается от оригинала. Да, в версии из пака удалена строчка, однако, эта строчка написана с опечаткой и по факту в игре и так не работает.

Пожитки Shadows'а, точнее Shadows Addon RMA. Я их даже не трогал.

3) combine_2.ps не используется в сталкире, правка этого шейдера бессмысленна на 100%.

Тоже его рук дело  :).

4) назначение cross_color.ps для меня загадка. В движке он не вызывается, из шейдеров тоже.

Всё работает, прицел теперь полупрозрачный.

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

Какой ещё детальныйй бамп? Кроме глосса я ничего не менял. И то, брал из шейдерпака Макрона файлик.

 

А детальный бамп где-то валялся, для 7 патча.

 

 

- Удалены лишние файлы по совету KD87

- Некоторые оптимизации

- Добавил билдовскую погоду

- Немного исправлений

 

pybD6.jpg

XYKRj.jpg

 

 

Ссылка\Link: https://yadi.sk/d/T-olrGpjdrkgQ

Изменено пользователем Anonim
  • Нравится 4

Поделиться этим сообщением


Ссылка на сообщение
Я про sload.h, конечно. Там ужас.

 

Кроме глосса я ничего не менял. И то, брал из шейдерпака Макрона файлик. 

:) Надо с ним поработать. Интересует кое-что: Есть у меня шейдеры за твоим авторством, для 7 патча. Там есть POM, но что-то он не собирается работать. Может подскажешь что-нибудь?

 

Там ужас ещё с оригинала вроде  :grin2:

 

Ну дак собирал-то ты

Собирал, отмазыватся не буду  :). Просто сильно не вникал в это, упор делал на лучики и боролся с грязью линзы. Кстати, спасибо за совет по добавлению новых семплеров, а то я бы и дальше тупил  :).

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

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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