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

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

KD87, тоже не получилось. С шейдером glass бутылка была совсем невидимая, а с models\window стала маленькая и смещённая относительно второй текстуры(пробка и этикетка).
В SDK для обеих вариантов - всё ОК.
topdog, в архиве 2 варианта текстур и скрины из SDK и игры для вариантов с glass и models\window.

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

@k01jan, попробуй вот эту текстуру. Мне кажется, на твоей настолько прозрачное стекло, что просто нечего отображать.

http://rghost.ru/48383410

Пробуй с шейдером glass.

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

@k01jan, в сталкере неправильно работает рендеринг прозрачных шейдеров на худе. 
Ты можешь разве что model_aref использовать но он вроде как края резко режет, так что бутылка у тебя скорее всего непрозрачная будет.

 

  Цитата

Я сомневаюсь, что хоть где-то такое можно. Лучше опиши ситуацию, 90%, что есть приличное решение   :)

 

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

 

--------------------

Кстати, а нечто подобное возможно в сталкере? Я о ночном прицеле. (Не так, как это делал тот же Meltac накладывая на готовую картинку круглое пятно а именно через модель)

 

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

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

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

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

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

Shoker,
Коллиматор можно сделать иначе =) А в общем случае такую задачу можно решить только с изрядной переделкой движка. Дело в том, что в шейдере просто нет нужной информации для решения этой задачи, каждый шейдер знает только о себе и своей поверхности. Значит, нужны правки, чтобы эту дополнительную информацию шейдеру предоставить + эту информацию нужно ещё и организовать. Вероятно ввести дополнительную очередь отрисовки, куда будет собираться рисование этих специальных стёкол с глубиной, потом этот результат использовать для фильтрации рисования невидимых объектов, передавая его как текстуру в шейдер.
 

  Цитата

Кстати, а нечто подобное возможно в сталкере? Я о ночном прицеле.

Опасаюсь, что без влезания в движок тоже не получится. Речь идёт фактически о постпроцессе не на весь экран, а локально. Кстати, в этом ролике видно, что разрабы Метро немного сжульничали. Увеличение делается изменением общего fov, а прицел только обеспечивает ночное зрение. Сделать же увеличение локально, т.е. вокруг и внутри прицела разный fov, - это требует отрисовки сцены два раза. Этого они видимо решили не делать.

  • Нравится 1
  Полезный утиль (Показать)
Ссылка на комментарий

Здравствуйте.
Я добавил шейдеры by MacroN из билда 2218. (ТЧ)
Убрал шейдер блеска (sload), включил отбеливание изображения (из тех же шейдеров, так же проведены собственные изменения) и альтернативную модель освещения.
Проблема в том что вокруг актёра появился зелёный круг.
Он заметен только при тумане. Так же я выявил что баг зависит от common.h (отбеливание изображения).
Не могли бы вы подсказать как его исправить.

 

 

  common.h (Показать)
Изменено пользователем warwer
  • Нравится 1
Ссылка на комментарий

@plac, и common.h, и sload.h не являются шейдерами. Это библиотеки часто используемых функций. Чтобы ответить хоть как-то на твой вопрос, надо видеть сами шейдера. 

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

Столкнулся с проблемой - для объекта нужен шейдер, который не отбрасывал бы тень, но при этом сам освещался по всем правилам. (как допустим руки на худе) Все стандартные шейдера либо кидают тень, либо полу-прозрачные. 
Возможно ли в сталкере сделать шейдер чтобы объект с ним не отбрасывал тень но и при этом был не прозрачным? (Либо был прозрачным настолько, чтобы это было незаметно)

Не совсем понятно как вообще настраивается шейдер на предмет отбрасывать ли ему тень или нет.

Я подозреваю что это зарыто в движке, и модель просто проверяется на степень прозрачности, надеюсь я ошибаюсь. 
Зарание спасибо.

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

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

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

Ссылка на комментарий
  *Shoker* писал(а):

Возможно ли в сталкере сделать шейдер чтобы объект с ним не отбрасывал тень

Только если движок ковырять.

 

  *Shoker* писал(а):

модель просто проверяется на степень прозрачности

Как связана модель с прозрачностью? :)  Прозрачность у текстур только. Сделай непрозрачную текстуру, будет тебе непрозрачная модель с шейдером полупрозрачности. Как альтернативу, можно еще попробовать в обычный *.s-шейдер воткнуть что-то типа :sorting   (3,true). Только мне сдается, все равно нормального освещения не получишь.

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

Ну я к тому, что у моделей есть прозрачные шейдеры вроде model\xanomaly (невидимый кровосос), с ними модель не кидает тень но при этом сама прозрачность делается на уровней шейдеров, у текстуры даже нету альфа-канала. 

Вот сейчас смотрю в этом направлении как раз.

 

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

Таким образом если модель полностью видима то она будет откидывать тень. (говорю вроде, потому что шейдеры проверял не я, так что ещё уточню этот вопрос)

 

На самом деле я до сих пор не понимаю, как движок определяет что объект должен откидывать тень. Если бы я это понял то возможно что то придумал бы. Пока я знаю что если на объект повесить прозрачный шейдер то тени от него не будет. Но в таком случае получается движок определяет насколько прозрачен объект и если прозрачность больше определённого уровня, то он тень не кидает, я так это понял. (собстно тот же принцип что и с тенью от сетки-рябицы, там резкое обрубание текстуры по альфе и то что остаётся, откидывает тень) 
Если это так то наверно где то возможно есть регулятор, который определяет степень прозрачности, при которой модель считается "прозрачной" и  тень не откидывает. 

 

А sorting разве не отвечает за "порядок отрисовки поверхности по отношению к самому объекту,", вроде как на тени влиять он не должен.



____________________________________

Вообщем методом тыка добился определённых результатов, так и не понял как всё там в движке работает.
Осталось решить лишь одну проблему:

От тени избавится удалось (не подозреваю как), сама модель также корректно освещается и на неё накладываются тени 
ОДНАКО используемый мной шейдер использует hemi-освещение тоесть помимо обычного освещения на модель накладывается свет неба из за этого модель светится в темноте.
 
7ea0ba4ad4.jpg27a1cf6d48.jpg

 

 
В связи с этим два вопроса:

1) Как правильно убрать hemi освещение? Я вижу эту часть в коде но у меня постоянно ошибка при компиляции шейдера при попытках там что то поправить.
2) Используются ли СДКшные параметры в скриптовом шейдере? Допустим я в СДК настроил шейдер а потом сделал его в скриптах, будет ли мой скриптовый шейдер, что ниже, использовать параметры из СДК как дефолтные?
 
ЗП, R2 Полное динамическое. 

Коды шейдеров:
191aee4d64.jpg

 

 
r2\model_xanomaly.s
function normal (shader, t_base, t_second, t_detail)
shader:begin ("deffer_model_flat","deffer_base_flat")
shader:sampler ("s_base")      :texture (t_base)
end
 

Эти шейдеры с оригинала.

  r2\deffer_model_flat.vs (Показать)
Изменено пользователем *Shoker*

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

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

Ссылка на комментарий
  *Shoker* писал(а):

Ну я к тому, что у моделей есть прозрачные шейдеры вроде model\xanomaly (невидимый кровосос), с ними модель не кидает тень но при этом сама прозрачность делается на уровней шейдеров, у текстуры даже нету альфа-канала.

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

 

 

  *Shoker* писал(а):

На самом деле я до сих пор не понимаю, как движок определяет что объект должен откидывать тень.

Ясно, как. Если добавляется в основную очередь отрисовки, то есть если визуал не худ, не стекло, не дисторт-визуал - рисуем тень. В какую очередь пойдет объект частично можно контролировать в скриптовом шейдере (ну или в сдк): sorting - в очередь полупрозрачных объектов, если есть функция l_special - в очередь дисторт-объектов.

 

 

  *Shoker* писал(а):

А sorting разве не отвечает за "порядок отрисовки поверхности по отношению к самому объекту,", вроде как на тени влиять он не должен.

sorting заставляет движок пихать модель в очередь полупрозрачных объектов. Они (в Сталкире) теней не отбрасывают.

 

 

  *Shoker* писал(а):

1) Как правильно убрать hemi освещение? Я вижу эту часть в коде но у меня постоянно ошибка при компиляции шейдера при попытках там что то поправить.

Ну учет хеми составляющей убери, в шейдере оно ж так и называется - hemi.

 

 

 

  *Shoker* писал(а):

2) Используются ли СДКшные параметры в скриптовом шейдере? Допустим я в СДК настроил шейдер а потом сделал его в скриптах, будет ли мой скриптовый шейдер, что ниже, использовать параметры из СДК как дефолтные?

Скорее нет, в движке это вроде разные шейдеры. Но попробуй.

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

Так эти шейдера на 50% состоят из работы с hemi, стоит мне что то убрать так сразу ловлю ошибку компиляции, а на что заменять не понятно. :( Шейдер же должен что то возвращать.

Я даже saturation() не смог убрать\заменить на ноль чтобы не словить вылет. 
 

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

 

Юзать просто СДК-шные заготовки вроде model\model не могу потому что если не прикрутить к ним скриптовый шейдер то в игре с использованием сортировки модель рисуется сквозь себя и освещается криво. 

 

759de15197.jpg

 

  Цитата

Скорее нет, в движке это вроде разные шейдеры. Но попробуй.

Судя по тому что я из своего .s шейдера убрал вообще всё, в том числе и sorting и он всё равно не кидает тень, я полагаю что таки используются, просто настройки из  .s могут перекрывать те что в СДК. Ну либо в скриптовых шейдерах sorting по умолчанию не 0\1.

 

  Цитата

 

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

 

 

Да, это уже я неправильно сказал. Под невидимым я имел ввиду полу-невидимый. Он юзает шейдер xanomaly а тот в свою очередь текстуру pfx_glass_6 для создания искажения, так что тут я ошибся. 

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

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

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

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

 

 

  *Shoker* писал(а):

Мне б хотя бы код какого нибудь простого шейдера

Дак не будет нормального освещения. Нормальное освещение реализуется во время deffered-пасса, а в нем не участвует полупрозрачная геометрия. А вся непрозрачная - бросает тень. Единственное, что можно попробовать - на основе любого полупрозрачного шейдера (хоть даже и воды) написать реализацию какой-нибудь модели освещения. Конечно, освещение можно реализовать только солнечное.

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

:crazy: чёрт... 

Спасибо за ответ. 

 

Заменил в deffer_model_flat.vs

O.position = float4 (Pe, hemi_val); //use L_material.x for old behaviour

на 

O.position = float4 (Pe, 0.1); //use L_material.x for old behaviour

 

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

Точнее оно освещается и источниками света и солнцем но вот если к солнцу стать спиной, неосвещённая часть модели становится тёмной и освещается только этим самым hemi. Вот если бы hemi можно было выключать в неосвещённых участках тогда бы оно выглядело бы нормально.

 

Ну модель освещения свою я врятли осилю :D
Кстати бамп полностью шейдерами реализован или также в deffered? А то заметил что нога у меня плосковато выглядит.(впрочем соответствует названию шейдера) С ним бы в принципе текущий вариант можно было бы попытаться использовать. 

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

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

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

Ссылка на комментарий
  *Shoker* писал(а):

Кстати бамп полностью шейдерами реализован или также в deffered?

:)  А defferd-пасс это тоже шейдеры. Тут тоже ничего утешительного - хотя и можно рассчитать бамп для полупрозрачной геометрии, его некуда применять. В сталкире бамп корректирует позицию в пикселе г-буффера, благодаря этому потом при освещении ты видишь тени от бампа. А полупрозрачная геометрия в г-буффер в принципе ничего не может записать, так что и бамп считать для нее бесполезно.

 

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

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

Дык весь код и привёл выше. :D

 

Я сам не знаю как и что там работает. 
Подозреваю что тень пропала просто из за sorting 3.

Но если sorting 3 использовать без скриптового шейдера то модель начинает просвечивать сквозь себя, а в комбинации со скриптовым всё норм.

 

И кстати говоря я выше писал про то что у меня модель светится в темноте, так вот оказалось что это похоже не из за шейдера, а из за того, что у меня модель как бы спавнится на 200 метров выше игрока, и основная геометрия (кроме центровой кости) опускается анимацией вниз к игроку, и я сейчас заметил что со стандартным model\model модель точно также светится в темноте, тогда как если спавнить её на уровне игрока то освещается нормально. Видимо игра считает что модель находится далеко от игрока и применяет к ней упрощённое освещение. В связи с этим когда я поправлю модель вполне возможно что и тот шейдер выше будет нормально освещаться в темноте и не кидать тень.

 

Сразу хочу сказать что тени пропали не из за этого, потому-что с обычным model\model та-же модель кидает тень как надо. 



UPD: Ну вообще разобрался что да как, тот шейдер без тени всё также глючит (таким образом получается что без правок движка нормальный без-теневой шейдер и впрямь не сделать) а вот model\model у меня освещался в темноте потому-что игра считала что модель у меня под солнцем т.к центр модели был в небе, из за этого вся модель освещалась hemi-светом. 

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

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

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

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

 

 

  *Shoker* писал(а):

Дык весь код и привёл выше

Ну с этим кодом вообще счастье, что хоть что-то работает. Пиксельный шейдер полупрозрачных объектов должен возвращать цвет в виде half4, а deffer_-шейдер возвращает три вектора half4, потому что рендеринг в г-буфер идет через MRT.

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

Возможно нубский вопрос, но все же.

Есть ли хоть небольшая надежда, что когда-нибудь появятся шейдеры для спецэффектов, которые будут реагировать на окружающее освещение(хотя бы ambient-освещение)?

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

При чем тут взрывы. Я имею ввиду когда, например, днем туман выглядит нормально, а ночью от этого тумана становится слишком светло. Т.е. партиклы всегда используют свою яркость независимо от окружающего освещения. Для таких эффектов как студень и электра это нормально. Но вот дым выглядит весьма странно, когда начинает светиться ночью.

Тем более у blend-шейдера есть странная особенность перекрывать светящиеся партиклы как огонь или вспышки молний. Это вызывает еще больший конфуз.

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

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

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

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

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

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

Войти

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

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

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