Перейти к содержанию

Deathman

Разработчики
  • Публикаций

    1 077
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

Весь контент Deathman

  1. Вот смотри. Даже если ты умудрился придумать какой-то неевклидов линейный туман, который настолько крутой, что для его расчета необходимо использовать шум, то посмотри на меня - я могу >ПОКАЗАТЬ< что меняет мое решение какой-либо проблемы сравнением по типу ДО и ПОСЛЕ, а главное я могу >РАССКАЗАТЬ< как работает то или иное мое решение. Чем ты хуже меня? Ты старше, умнее, опытнее. Так возьми и покажи и объясни за каким чёртом ты в формулу линейного тумана запихнул шум. Дополнено 0 минут спустя А теперь объясни мне зачем. Ну вот зачем? Что это тебе дало?
  2. И что? Типа есть разница? Снова вопрос - куда в формуле (end - depth)/(end - start) ты умудрился запихнуть шум. Что по твоему это дало и зачем ты это сделал.
  3. ---___--- Формула нахождения степени затуманенном и для линейного тумана - end - d/end - start. Объясни мне куда ты здесь запихнул шум, что тебе это дало и зачем ты это сделал.
  4. Мистер Андерсон, ответьте мне - для чего вы это делаете? К чему именно ты в твоём тумане примешал шум, когда речь ИЗНАЧАЛЬНО шла про Hashed alpha?
  5. Path tracing - это не шум сам по себе, это сложный алгоритм трассировки виртуальных лучей. Мы можем использовать шум, но это не шум сам по себе
  6. Нах*й, а главное зачем ты начал цеплять шум к чему только не попадя?
  7. Ненавижу людей которые мыслят такими конструкциями если честно. Всегда противопоставляю себя им со своим проектом под любое железо. Как минимум главный аргумент который я могу высказать подобным людям - количество железа которое может запустить твой проект равно охвату аудитории, которую твой проект может заинтересовать, и если ты со своей херовой оптимизацией или вырезней рендеров отсекаешь какое-то количество железа - ты отрезаешь потенциальную аудиторию, а следовательно стреляешь себе в ногу и играешь против себя
  8. Конкретно здесь используются битовые операции, а значит автоматически DX10+
  9. ---___--- В чистом небе и нет шума, кроме как из текстуры. А тот что ты скинул во-первых темпоральный, во-вторых он очень тяжёлый, так как использует одновременно три тяжёлых функции. Возьми какую-нибудь текстуру с шумом и выведи ее в шейдеры и используй его. Это даст быстрый шум, скорость получения которого равна скорости чтения из текстуры и который ты можешь в последствии докастомизировать под себя
  10. Пока я до 8 числа на отдыхе на полном отдыхе то я уверен в том что ты прям 100% наверное сможешь в какой-нибудь день сесть и составить список имён методов, которые тебе нужны. Если составишь - скинь здесь или в личку тут или в ВК
  11. Вау Меня аж два раза упомянули
  12. В случае с оригинальными шейдерами просто везде где используется clip(прозрачность - def_aref) заменяешь def_aref на шум. Поэкперементируй с плотностью шума и его минимальным и максимальным зачениями. У меня всё проще - у меня это дело одной функции, которая вызывается из двух шейдеров
  13. Hashed alpha testing позволяет избавиться от потерь данных при альфа тесте, а также позволяет использовать градиентную альфу. Дополнено 7 минуты спустя Вот видеосравнение обычного альфа теста и более продвинутых вариаций Дополнено 23 минуты спустя Хочу дополнить - сглаживания не могут восстановить потерянные пиксели Альфа тест происходит на этапе материала, в текстурном пространстве самой текстуры, а сглаживания работают на этапе постобработки, в текстурном пространстве всего кадра. И когда мы на этапе материала потеряли пиксели - мы уже не сможем их восстановить на постобработке
  14. 0_o Так-то я уже в которой теме подряд объясняю принципы отдельных технологий, для того чтобы люди с мозгами их реализовывали у себя, а не просто понтуюсь
  15. Ну типа если нужно - скинь конкретный пул методов списком и я перенесу к себе какие смогу
  16. Соррян за мою раздутое до огромных размеров чсв - я похож на человека который кому угодно что угодно в любой момент сделать готов и у которого своих дел и своих трат времени нет? SOM это самое простое что может быть, может справиться самостоятельно.
  17. Ничего я не буду перерисовывать - я просто поднял минимально допустимое пороговое значение обрезки и теперь мы затрагиваем меньше пикселей с низким значением альфы Более низкое пороговое значение - меньше потерь пикселей, больше артефактов от пролезания черного фона в кадр Более высокое пороговое значение - больше потерянных пикселей при альфа тесте, но нет артефактов от черного фона Так или иначе это уже тонкости настройки и использования алгоритма, а не его минусы и полностью его обесценивать из-за того что фиксится секунду - бред
  18. 0_о о_0 А в чем разница в рамках хранения альфы собственно говоря между DXT5 и каким-нибудь другим DXT, кроме того что альфа не компрессируется, а интерполируется, и когда это альфа стала делиться на "стандарты"?
  19. Але - текстуры и технология это разные вещи. Тут проблема не в технологии, а в том какие текстуры в нее идут и как настроено пороговое значение теста этих текстур
  20. В последний раз в этом году Deathman на связи и в этот раз я расскажу про то как работают объекты с прозрачностью в 3D графике и очередной крутой технологии в N.S.P.X: The Final. Начнем с абстрактного примера: У нас есть необходимость сделать дерево с листвой, но мы ограничены в вычислительных возможностях, так как дерево будет использоваться не для фильма, а для игры, и мы не можем сделать каждую ветку и листочек на нем отдельным набором полигонов. Как быть? А поступить можно следующим образом - можно замоделить полноценную ветку и запечь ее в текстуру и вместо ветки использовать текстуру ветки. Но тут другая проблема - текстура ветки имеет фон, и если мы наложим текстуру прямо так то это будет выглядеть как картонка с рисунком. Как убрать фон? А решений очень много, но в одном они все схожи. Мы можем взять и сделать отдельную карту, по которой мы будем "обрезать фон" - эта карта называется "альфа" или более корректно Opacity map, то есть карта прозрачности. Суть этой карты следующая - чем ярче в диапазоне [0; 1] пиксель тем менее он прозрачен. Первый и самый очевидный подход к использованию этой карты это брать некоторое пороговое значение на соответствие с которым мы будем "тестировать" яркость пикселя альфы и если яркость ниже - "отрезать" этот пиксель и не отрисовывать его. Это называется "Alpha test" Окей, мы добились нужного нам результата, но какой ценой? - пиксели "Отрезаются" очень грубо, получаются лесенки из пикселей, а если текстура, которую мы тестируем находится далеко и занимает мало площади в кадре - мы теряем слишком много данных и текстура получается "Обгрызанной". С лесенками из пикселей и частично с потерей данных мы можем бороться другой технологией - alpha to coverage, которую я частично объяснял в прошлом своем посте. При помощи ATOC данные мы теряем меньше, да, но не так мало как можно было бы. На этом моменте в студию заходит Nvidia со своим подходом к альфа тесту. А что если использовать не константное пороговое значение для тестирования пикселя? Что если это значение будет меняться от пикселя к пикселю? В таком случае это даст нам возможность терять намного меньше информации о прозрачности пикселя. Данная технология была названа Hashed alpha testing. Как это можно реализовать? Я реализовал это следующим образом - я беру текстуру синего шума, для того чтобы не тратить время кадра на расчет качественного шума в реальном времени. Ограничиваю полученное значение шума между двумя точками [0.05; 0.2] и использую его как пороговое значение для пикселя в альфа тесте. (Если пиксель карты прозрачности менее яркий чем пороговое значение - вырезаем его) Результат перед вами. Всех с наступающим новым годом, встретимся снова после новогодних праздников. Документ по настоящему Hashed Alpha от NVidia - https://developer.download.nvidia.com/assets/gameworks/downloads/regular/GDC17/RealTimeRenderingAdvances_HashedAlphaTesting_GDC2017_FINAL.pdf Если вам нравятся мои посты то можете подписаться на мою группу в ВК - https://vk.com/nocturning_games Если вы хотели бы присоединиться к разработке моего проекта напишите мне здесь или в ВК - https://vk.com/ns_deathman
  21. Там нет разграничения - там именно 3D графика и анимация и мне кажется что это название категории намекает на то что это не про эффекты, а про модели и анимацию. То есть немного не очевидно
  22. Там дополнительно другой прикол - при alpha test теряются пиксели с отдалением текстуры от камеры. При использовании alpha blend такой проблемы нет, но возникает проблема в том что у нас нет теста глубины и мы видим перекрытые пиксели объекта самим объектом так, как будто они накладываются поверх, а также касательно stalker мы их рендерим после gbuffer и следовательно на них не действует освещение. Есть также hashed alpha, но со сталкерскими текстурами получается странный результат. Остается ATOC - он убирает погрызанность текстур на расстоянии, а также их сглаживает. Но проблема моего подхода состоит в том что текстуры вблизи, если на них смотреть прямо в лоб на короткой дистанции, они не сглаживаются, но чем дальше находится текстура, тем лучше она начинает сглаживаться и тем меньше теряется деталей Я бы с удовольствием показал это как на второй картинке, но я не знаю как так в одном и том же фрагменте кадрировать две картинки Дополнено 4 минуты спустя Научите меня кадрировать разные картинки также Дополнено 12 минуты спустя Короче вот тут можно больше узнать про разные вариации работы с альфой https://casual-effects.com/research/Wyman2017Improved/index.html А это то о чем я говорю Дополнено 35 минуты спустя Пацаны ждем пост про Hashed alpha - только что написал простую реализацию в три строчки кода
  23. Попробуй прогрузить две картинки и стрелочками на клавиатуре их переключать, так будет видно разницу, а так позже попробую сделать такое сравнение