mainCam.depthTextureMode |= DepthTextureMode.DepthNormals;
private const int PASS_MAIN = 0;
public float NoiseAmount = 0.5f, NoiseScale = 2;
public float LuminanceThreshold;
public class HumanEye : MonoBehaviour
Прежде чем приступить непосредственно к шейдеру, напишем небольшой скрипт, выполняющий прогонку экранного буфера через этот самый шейдер:
Писать будем под Unity3D Pro, в виде шейдера для постпроцессинга.
Потеря четкости зрения на большом расстоянии при средней и низкой освещенности
Небольшой шум (там же)
Потеря четкости зрения там же
Потеря цветовосприятия в зонах низкой освещенности
Первым делом нужно определиться, какого эффекта мы хотим достичь. Я разбил всю обработку на следующие части:
После: финалист IGF и лауреат всех наград E3
До: унылый польский шутер
В результате мы получим что-то вроде следующего (смотреть на весь экран!):
Все эти эффекты можно наблюдать самому, оторвавшись от компьютера и выйдя ночью на улицу.
Как известно, в темноте зрение человека обеспечивается клетками-палочками сетчатки, высокая световая чувствительность которых достигается за счет потери цветочувствительности и остроты зрения (хотя палочек в сетчатке и больше, они распределены по гораздо большей площади, так что суммарное «разрешение» выходит меньше).
Сегодня мы будем заниматься постпроцессингом изображения в DirectX.
Имитируем ночное зрение человека в 3D-игре
Имитируем ночное зрение человека в 3D-игре / Хабрахабр
Комментариев нет:
Отправить комментарий