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

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

@tatarinrafa, ну для начала как твоя игра должна догадаться что ей нужно запустить moy_shader.ps и при этом применить его ко всему экрану. :D

 

Вызов новых шейдеров прописывается либо в движке, либо, для моделей, в СДК. (ну грубо говоря) 

Конкретно если ты хочешь окрасить весь экран в красный, то тебе нужно открыть шейдер постпроцесса экрана (combine_2_ххх,ps, их там два больших, не помню какой точно нужен, по моему combine_2_naa.ps), который движком вызывается, и там уже модифицировать код по своему желанию. 

 

Только учти что, по крайнем мере в ЗП, в этом файле много закоментированного (отключённого) кода (   /* ... */  )

Туда писать ничего не надо. 

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

Ооо... хоть кто-то, что-то расписал! спасибо

 

Конкретно если ты хочешь окрасить весь экран в красный, 

Ну это так, чтобы хоть знать что мой шейдер прочитасля,  ;)

 

а если в какой нибудь файл вставить #include "moy_shader.ps" проконает?


 

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

@tatarinrafa, игра то его скомпилирует(и то, если сможет), но функция, которая внутри не вызовется и никак не обработается...

Изменено пользователем Viнt@rь
Ссылка на комментарий

@tatarinrafa, это надо HSLS подучить. Там в принципе не много надо и язык легко усвояем. Если я не заблуждаюсь, он создан на основе С#. А специальный тутор\мануал под сталкер это не то что бы религия запрещает, но такого не водиться  :)

 

Подучу в процессе, методом проб и ошибок  :)

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

для сталка они на hlsl пишутся

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

 

а если в какой нибудь файл вставить #include "moy_shader.ps"

Как уже ответил @Viнt@rь, шейдер соберётся но код внутри него нужно вызвать вручную, посмотри на dof.h

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

 

 

вроде весь экран должен был красным стать, а не вышло...

Дык. В сталкере у все точки входа имеют имя main, а не произвольное. ПЛюс, если просто закинуть файл в геймдату, ничего не выйдет. Все шейдеры вызываются при отрисовке геометрии из движка, так что или рисуй из движка квад на весь экран, или вставляй свой код в один из поолноэкранных шейдеров. Обычно это combine_2_naa.

 

А так правильно написал.

 

 

 

И все же как бы его прикрутить на другие источники освещения?

В самом вопросе кроется ответ. Рисуй дерт для каждой лампы. Рендеряй квад вокруг каждой лампы, направленный на камеру. Пересчитывай текстурные координаты квада в пространство экрана, семплируй дерт-текстуру и все.

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

@KD87, Легко тебе говорить))) А мне бы для начала разобрать что это) и как его реализовать, и оно все в шейдере реализуется или же нужно и в движке какие манипуляции проводить?)

Ссылка на комментарий
оно все в шейдере реализуется или же нужно и в движке какие манипуляции проводить?)

Ну раз я пишу "рисуй квад для каждой ламп", очевидно, что начинать надо с движка :) Есть же пример готовый - солнечные флары. Ровно то же самое - квады, повернутые на камеру. Берешь идею и делаешь это для ламп.

Изменено пользователем KD87
  • Полезно 3
Ссылка на комментарий

3-й час сижу и все ни как. как мне и сказали в combine_2_aa.ps дописал #include moe_shader.h по примеру #include "mblur.h"

 

вот содержание моего файла

 

 

 

#include "common.h"

float4 main() : COLOR0
{
return float4(1, 0, 0, 1);
}

 

 

 

При запуске выдает ошибку.

 

пробовал так:

 

#include "common.h"

float4 main ( float4 C:COLOR0 ) : SV_Target
{
return float4(1,0,0,1);
}

 

 

запускается но не че не меняется

 

как надо написать, чтобы каждый пиксель на экране стал красным

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

 

 

вот содержание моего файла

Как может быть у одного шейдера две точки входа? Одна main уже ведь есть в основном файле. Пиши функции, потом вызывай их из основного файла.

Типа

float4 make_red()

{

 return float4(1,0,0,1);

}

 

и вызов из combine_2_naa:

 

...

return make_red()

...

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

@KD87,

 

вот мой файл

 

 

float4 make_red()
{
return float4(1,0,0,1);
}

 

 

 

вот начало combine_2_naa

 

 

#include "common.h"
#include "mblur.h"
#include "dof.h"
#include "moe_shader.h"
/*
struct v2p
{
float4 tc0: TEXCOORD0; // Center
float4 tc1: TEXCOORD1; // LT
float4 tc2: TEXCOORD2; // RB

....

 

вот конец combine_2_naa

 

 

 

....

res.Color += combine_bloom( img, bloom );
#ifdef USE_MSAA
float4 ptp = mul(m_P, float4(gbd.P, 1));
res.Depth = ptp.w==0?1:ptp.z/ptp.w;
#endif

return res;

return make_red();
}

 

 

Выдает ошибка что у меня слабая видюха, это 670 то слабая? лол

что я делаю не так? (лучше бы я дальше баловался со скриптами и не лез в шейдеры, такая туфта...) :wacko:

 

 

 

 

ну не ужто заработало

 

res.Color = make_red();

в конце combine_2_naa

Изменено пользователем tatarinrafa
Ссылка на комментарий

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

ba9599747b.png  36914dd0ee.png

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

@PlayMod

Хочу тоже такое замутить для ЛА. шейдэр то написать наверное можно, а вот чтобы они были только при дожде то хз. Может можно как то отследить под дождём ли гг(Например звук дождя когда находишься под открытым небом сильнее чем если под деревом стать. Может где в скриптах это контролируется)

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

@KD87

Может еще поможешь? 

Как покрасить пиксели в красный в пределах области? например 64х64 в верхенем углу экрана. я так понимаю условий на проверку координат пикселя в шейдерах нет?

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

@tatarinrafa,@PlayMod, вполне реализуемо на скриптах, есть метод получения дождя (мелкий, ливень и т.д.), в зависимости от этого получаем есть ли у нас маска со стеклом и рисуем капли по своим алгоритмам. Собственно все. Не знаю как по оптимизации конечно, но работать будет.

 

@tatarinrafa, можно извратится и нарисовать статиками, но лучше взять движок поновее и написать шейдер, примеров в принципе хватает. Разница будет в том, что шейдером можно нарисовать движение капель, а статиком это будет сделать проблематичнее (если вообще возможно, так на вскидку не скажу).

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

Ну как бы да: банально поиск по amk_mod по "blurs", или те же amk_particles. Например. Чтоб далеко не ходить.

Но почему на это должен указывать кто-то другой ?

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

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

Изменено пользователем Anonim
Ссылка на комментарий

 

 

Выдает ошибка что у меня слабая видюха

Ошибка по неподдерживаемой версии шейдеров выдается при синтаксических ошибках в шейдере. В логе при этом пишется настоящая причина.

Вообще, все твои проблемы пока от незнания и невнимания. Не надо винить в этом сталкера.

 

 

 

я так понимаю условий на проверку координат пикселя в шейдерах нет?

Почему нет? if then else и вперед. Это если в лоб решать. Если потоньше, то color = lerp(color_1, color_2, binary_condition)

 

 

 

а некто не знает как настроить шейдеры

Все равно, что спросить "Как настроить сталкера, чтобы там шестиствольный пулемет появился". Как-как - запилить с нуля.

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

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

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

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

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

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

Войти

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

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

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