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

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

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

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

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

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

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

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

Видеокарта 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

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


Ссылка на сообщение
Поделиться на других сайтах
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);
}

 

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

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

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

Видеокарта 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 1066 мГц (Разносорт)

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

Видеокарта 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" - не сотри составляющие случайно.

 

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

 

 

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


Ссылка на сообщение
Поделиться на других сайтах

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

 

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


Ссылка на сообщение
Поделиться на других сайтах
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 пиксель, чтобы уменьшить разницу между увеличившимися в размере текселями)

Идеи?

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


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

 

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

d52ff8f771b3.jpg

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


Ссылка на сообщение
Поделиться на других сайтах
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

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


Ссылка на сообщение
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

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

AMK-Team.ru

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