HLSL полупрозрачный пластиковый шейдер - PullRequest
1 голос
/ 08 сентября 2010

Я пытаюсь создать шейдер для копирования белого пластикового объекта с цветным светом внутри. Либо с помощью шейдера, который будет полупрозрачным, и если я поместу свет внутрь объекта, свет будет проходить сквозь него, либо с помощью шейдера, который имитирует эффект света внутри.

Эффект, который я собираюсь получить, подобен свету, проходящему через абажур, похожий на эти картинки:

alt text alt text alt text

В идеале я мог бы контролировать силу и цвет света, чтобы заставить его пульсировать и вращаться через несколько ярких ярких цветов флуро

Хотя я не уверен, с чего начать!

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

Ответы [ 2 ]

4 голосов
/ 10 сентября 2010

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

2 голосов
/ 09 сентября 2010

Хорошие фотографии.Похоже, тип используемого полупрозрачного пластика может иметь большое значение.Я вижу, что яркость пластика в каждой точке зависит от угла между лучом от источника света к этой точке и нормалью поверхности в этой точке.(Угол обзора не имеет значения.)

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

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

Вы также можете добавить небольшое зеркальное отражение поверх этого.

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

...