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

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

27.03.2021 в 00:38, Biblia сказал(а):

только при условии включенно ПНВ

Возможно. Проверяете включен ли пнв при отправки модели на конвеер рендера. Рекомендую курить функции связаные с рендером в XrGame.

Скрытый текст

6 ГБ ОЗУ DDR3 1098 мГц (Разносорт)

Процессор Intel Xeon E5420 4/4 2.5 ГГц

Видеокарта Gigabyte GeForce GT 240 512 МБ GDDR5 (Samsung) DirectX v10.1

 

Ссылка на комментарий

Screen Space Contact Shadows

 

 

AnomalyDX11AVX_2021-04-14_20-08-31.png

raw

AnomalyDX11AVX_2021-04-14_20-08-16.png

без

AnomalyDX11AVX_2021-04-14_20-08-22.png

наложение и смешивание с обычными тенями и моделью освещения

 

Видео в движении

https://www.youtube.com/watch?v=5CronUii8_4

Блум и постобработка

тут без сравнения, потому что надо частично менять конфиги погоды, чтобы показать до. Но думаю многие примерно знают, как выглядит сток Аномали.

Никакого рейшейда - все встроенно в движок и относительно неплохо оптимизировано

 

AnomalyDX11AVX_2021-04-13_21-16-50.pngAnomalyDX11AVX_2021-04-11_15-10-42.png

AnomalyDX11AVX_2021-04-13_21-12-49.pngAnomalyDX11AVX_2021-04-13_21-13-43.png

В процессе работа с водой

 

AnomalyDX11AVX_2021-04-14_20-48-22.png

не думаю что это сильно отличается по качеству от текущей воды в xray - просто чуть чуть иначе считается переход от "прозрачности к отражению"

в плане просто заменить на Screen Space Refection

  • Нравится 3
Ссылка на комментарий
15 минут назад, Cornholio сказал(а):

просто заменить на Screen Space Refection

Можно использывать "перевернутый бекбуфер" как вариант. С мягкой водой его как правило можно не пугаться. Да он не сильно корректный, но в отличии от других скринспейсовых техник, не "дырявый". Вот моя реализация такова вида отражений

float4 ScreenSpaceLocalReflections (float3 vspos, float3 vsnorm) //Initial beam length
{
	float3 refl_vec = normalize(reflect(normalize(vspos), normalize(vsnorm)));
	float2 reflPos = saturate(position_get_tc(refl_vec)); // We get the pixel position in Screen Space of the reflected geometry
	
	float canrefl = refl_vec.z > 0.0 ? 1.0 : 0.0;
	
	float4 hit_pos = gbuffer_load_position(reflPos, 1e3); // Sample s_position
		 
	canrefl *= smoothstep(length(vspos), length(vspos) * 1.15, length(hit_pos));
	
	float borderAtten = GetBorderAtten(reflPos, 0.035f); // Grease the edges of the reflections for a smoother transition
	
	float3 color; // Sample Color
	
	#ifdef USE_DX9_LOAD
		color = tex2D(s_image, reflPos);
	#else
		color = s_image.Sample(smp_nofilter, reflPos);
	#endif
	
	return float4(color, borderAtten * canrefl);
}

 

  • Спасибо 1
  • Полезно 1
Скрытый текст

6 ГБ ОЗУ DDR3 1098 мГц (Разносорт)

Процессор Intel Xeon E5420 4/4 2.5 ГГц

Видеокарта Gigabyte GeForce GT 240 512 МБ GDDR5 (Samsung) DirectX v10.1

 

Ссылка на комментарий

спасибо!

я сейчас вот это читаю и осмысливаю

http://remi-genin.fr/blog/screen-space-plane-indexed-reflection-in-ghost-recon-wildlands/

вроде идея похожа, просто подменю на тот самый перевёрнутый бекбуфер, но с искажением от проекции

Ссылка на комментарий
8 минут назад, Cornholio сказал(а):

я сейчас вот это читаю и осмысливаю

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

Изменено пользователем _ХоЗаР_
Скрытый текст

6 ГБ ОЗУ DDR3 1098 мГц (Разносорт)

Процессор Intel Xeon E5420 4/4 2.5 ГГц

Видеокарта Gigabyte GeForce GT 240 512 МБ GDDR5 (Samsung) DirectX v10.1

 

Ссылка на комментарий

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

Ссылка на комментарий

Здравствуйте. Перекинул шейдер models_lfo_light_dot_weapons (динамический коллиматор) из аномали на сталкер зп, подключил к модельке и словил вылет с этим еррором: 

! error:  (18): error X3004: undeclared identifier 'screen_res'

Как я понимаю - не хватает чего-то в двигле, и без ковыряний в нем - метку, двигающуюся за центром экрана, не создать?

Ссылка на комментарий
25.04.2021 в 12:42, Holy Biblie сказал(а):

Здравствуйте. Перекинул шейдер models_lfo_light_dot_weapons (динамический коллиматор) из аномали на сталкер зп, подключил к модельке и словил вылет с этим еррором: 

! error:  (18): error X3004: undeclared identifier 'screen_res'

Как я понимаю - не хватает чего-то в двигле, и без ковыряний в нем - метку, двигающуюся за центром экрана, не создать?

 

Попробуй в файле шейдера сделать замену

"screen_res"

на

"pos_decompression_params2"

 

Только учти, это векторные величины, они как правило пишутся так "pos_decompression_params.xy или screen_res.zw" - не сотри составляющие случайно.

 

Я пока этим развлекался

 

 

  • Нравится 2
Ссылка на комментарий

Добрый вечер! Есть ли возможность уменьшить колыхание (шатание) травы? Из за большого количества ее на экране - в глазах рябит.  И еще можно ли ее заставить клонится в одном направлении имитируя направление ветра ?  Нашел вот такое видео 

 

Ссылка на комментарий
08.05.2021 в 21:03, BOPOHua сказал(а):

Добрый вечер! Есть ли возможность уменьшить колыхание (шатание) травы? Из за большого количества ее на экране - в глазах рябит.  И еще можно ли ее заставить клонится в одном направлении имитируя направление ветра ?  Нашел вот такое видео 

 

  1. Я не знаю способа уменьшить "волны" травы без залезания в сами шейдеры (по крайней мере я в консольных командах не видел ничего, что дало бы надежду)
  2. Поскольку я сам все свои эксперименты провожу на Аномалии, то могу только говорить на её примере (ванильный рендер ЗП хоть и является основой, но иногда может отличаться)
  3. я не уверен по этому методу, так как замерить "колыхания травы" сложно, а мой глаз не замечал каких-то проблем
  4. не гарантирую, что тебе поможет, но (!!) попробуй следующее:
    1. найди свою gamedata/shaders/папку используемого рендера (r1, r2, r3)/shared
    2. открой блокнотом файл common.h
    3. найди функцию calc_cyclic
    4. float 	calc_cyclic 	(float x)				
      {
      	float 	phase 	= 1.0/(2.0*3.141592653589f);
      	float 	sqrt2	= 1.0;//1.4142136f; измени тут на 1.0
      	float 	sqrt2m2	= 2.0;//2.8284271f; измени тут на 2.0
      	float 	f 	= sqrt2m2*frac(x)-sqrt2;	
      	return 	f*f - 0.5;				// [-1     .. +1] // а тут была 1.0, замени на 0.5
      }
    5. по идее это в 2 раза уменьшит "псевдо-синусоиду" по которой считается искажение для травы
  5. что касается видоса от LV - то этого скорее всего нет в твоей версии Сталкера, это его эксперименты с искажениями

 

PS
я продолжил бороться с облаками:

 

 

и пытаюсь сделать свое АО с блекджеком.. (ну вы поняли)

Desktop_Screenshot_2021.05.09_-_23.52.33

на скрине нет фильтрации, её еще не придумал (не прочитал - как правильно делать)

И я тоже задам вопрос (вдруг тут кто знает)
Для АО хорошо бы сделать downscale всего Gbuffer

Вроде я видел в рендере что-то связанное с этим делом в фазе AO, но я все свои эксперименты веду на движке аномалии, и хрен его знает - где и как там постарались моддеры до меня (например, я обнаружил что отдельный пасс для облаков просто был выключен)

 

Мне надо сделать, причем довольно экономным способом, Gbuffer в половинном разрешении, желательно с небольшим блюром (шириной 1 пиксель, чтобы уменьшить разницу между увеличившимися в размере текселями)

Идеи?

  • Нравится 1
Ссылка на комментарий

Всем привет! Делаю большой пак моделей для одной модификации. Заинтересовался, есть ли возможность создать новый шейдер прозрачности или отражения. Либо адаптировать под ЧН и/или ЗП какой-то уже имеющийся, помимо стандартных Window, FUR и Transparent.

В ТЧ на статике очень нравились зеркальные отражения на оружии в местах, где была прозрачность на текстуре. И отражения в стеклах НПС.  В идеале мне бы запилить полностью новый шейдер, сочетающий в себе прозрачность, отражения и шоб он ещё не перекрывал партиклы. А то сквозь огонь, дым и тд видно отдельно стёкла противогаза.

 

Сам в шейдерах ноль без палки. Тему пробежал, ответа не нашёл, в Я поисковике тоже особо ничё нет. 

 

Надеюсь на вашу помощь.


Подарки

  • 2
  • Ссылка на комментарий
    7 часов назад, Nestandart_5443 сказал(а):

     Заинтересовался, есть ли возможность создать новый шейдер прозрачности или отражения.

     

    Возможно всё. Вопрос только в постановке задачи и времени-сложности реализации. А раз ты сам в шейдерах ноль, то не знаю - как именно ты собрался это делать. Как мне говорил LV можно делать индивидуальные шейдеры под определенный mat ID, например, так реализован светящийся экран PDA в модах, где есть "физический" PDA.

     

    К сожалению деталей я не знаю, меня мало интересовали "частные случаи" я больше работаю с универсальными подходами.

    Пример "отложенного" шедера для npc

     

    model_npc.s

    function normal(shader, t_base, t_second, t_detail)
    	shader:begin("deferred_npc","deferred_npc")
    	: fog (false)	
    	shader:dx10stencil(true, cmp_func.always, 255 , 127, stencil_op.keep, stencil_op.replace, stencil_op.keep)
    	shader:dx10stencil_ref(1)		
    	
    	shader:dx10texture("s_base", t_base)
    	shader:dx10texture("s_bump", t_base.."_bump")	
    	shader:dx10texture("s_bumpX", t_base.."_bump#")	
    
    	shader:dx10sampler("smp_base")	
    end

    deffered_npc.vs

    #include "common.h"
    #include "skin.h"
    
    v2p_bumped _main( v_model I )
    {
    	v2p_bumped O;
    	
    	//Hpos and texcoord
    	O.hpos = mul(m_WVP, I.P);
    	O.tcdh = float4(I.tc.xyyy);
    
    	//Hemi
    	float3 Nw = mul((float3x3)m_W, I.N.xyz);
    	float3 hc_pos = (float3)hemi_cube_pos_faces;
    	float3 hc_neg = (float3)hemi_cube_neg_faces;
    	float3 hc_mixed = (Nw < 0) ? hc_neg : hc_pos;
    	float hemi_val = dot( hc_mixed, abs(Nw) );
    	hemi_val = saturate(hemi_val);
    
    	//TBN
    	float3 N = I.N;	
    	float3 T = I.T;
    	T = normalize(T - dot(T,N) * N);	
    	float3 B = cross(N,T);
    	
    	float3x3 xform = mul((float3x3)m_WV, float3x3(
    	2*T.x,2*B.x,2*N.x,
    	2*T.y,2*B.y,2*N.y,
    	2*T.z,2*B.z,2*N.z
    	));
    
    	// Feed this transform to pixel shader
    	O.M1 = xform[0]; 
    	O.M2 = xform[1]; 
    	O.M3 = xform[2]; 
    	
    	//Position
    	float3 Pe = mul(m_WV, I.P);
    	O.position = float4(Pe, hemi_val); //Use L_material.x for old behaviour;
    
    	return	O;
    }
    
    /////////////////////////////////////////////////////////////////////////
    #ifdef 	SKIN_NONE
    v2p_bumped	main(v_model v) 		{ return _main(v); 		}
    #endif
    
    #ifdef 	SKIN_0
    v2p_bumped	main(v_model_skinned_0 v) 	{ return _main(skinning_0(v)); }
    #endif
    
    #ifdef	SKIN_1
    v2p_bumped	main(v_model_skinned_1 v) 	{ return _main(skinning_1(v)); }
    #endif
    
    #ifdef	SKIN_2
    v2p_bumped	main(v_model_skinned_2 v) 	{ return _main(skinning_2(v)); }
    #endif
    
    #ifdef	SKIN_3
    v2p_bumped	main(v_model_skinned_3 v) 	{ return _main(skinning_3(v)); }
    #endif
    
    #ifdef	SKIN_4
    v2p_bumped	main(v_model_skinned_4 v) 	{ return _main(skinning_4(v)); }
    #endif
    
    FXVS;

     

    аналогичным способом можно "переписать" шейдеры для конкретных моделей/материалов

     

     

    Что касается кода выше - я сам его не проверял, что именно он делает. Это просто пример работы подобного подхода для "override" материала. Скорее всего он не дружит с тенями (т.е если ты будешь делать так новую геометрию - она не появится в shadowmap)

    Изменено пользователем Cornholio
    • Спасибо 1
    Ссылка на комментарий

     https://ibb.co/S6FvyGV

    https://ibb.co/fqJsG8W

    Кто-нибудь знает, как добиться такого же блеска? Залезать в движок, или обойтись правой шейдеров, и, если так, то каких именно шейдеров(и строк в них)? 

    Ссылка на комментарий

    хоть я это уже показывал в другом месте, но вдруг местной публике будет интересно:

    новая модель освещения - авто lvunter, чуть чуть подпилена для демонстрации мной. Попытка в полный PBR (понимаю - глупо пытаться на сток ассетах, но хоть попытались)

     

    AnomalyDX11_2021-06-24_19-42-18.pngAnomalyDX11_2021-06-24_19-42-51.png

    AnomalyDX11_2021-06-24_19-59-08.pngAnomalyDX11_2021-06-24_19-48-53.png

     

    много косяков, но работа идет

    • Нравится 3
    Ссылка на комментарий
    14.07.2021 в 18:16, Manche сказал:

    Какой шейдер отвечает за тень от солнца в ЧН ? Беда с тенями.cNor5lW.png

     

    не  совсем понимаю - что именно ты считаешь за беду. Но если речь идет о "фильтрации" теней - то тебе в shadow.h

     

     

    • Нравится 1
    Ссылка на комментарий

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

    a5bc871a94adt.jpg

    примечание мод ганс и адаптирована погода из аномали и все работает нормально но пересветы убивают все 

    Изменено пользователем Шипэтя

    Подарки

  • Ссылка на комментарий
    37 минут назад, Шипэтя сказал:

    но пересветы убивают все 

    Попробуй удалить user.ltx. Настройки графики сбросятся на дефолтные. Может поможет.

    • Согласен 1
    Ссылка на комментарий

    @Space.Marine 

    11 минут назад, Space.Marine сказал:

    Попробуй удалить user.ltx.

    Не помогло, как я понял по тестам, таких пересветов нет только на статике, а если другие подрубать то тут начинается резня по глазам, может еще есть способ?


    Подарки

  • Ссылка на комментарий

    @Шипэтя

     

    в консоли комманда

    r2_sun_lumscale

    для нее возможны значения от 0 до 3, попробуй что-то в районе 1.0

     

    её так же дополняют

    r2_sun_lumscale_amb

    r2_sun_lumscale_hemi

     

    с аналогичным диапазоном значений - попробуй уменьшать/подогнать под себя.

    Добавлено  HellRatz,

    Обратите внимание на правила цитирования. Оверквоттинг на форуме запрещен. Не обязательно цитировать пост целиком, тем более предыдущий.

    • Согласен 1
    • Полезно 2
    Ссылка на комментарий

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

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

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

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

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

    Войти

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

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

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

    AMK-Team.ru

    ×
    ×
    • Создать...