Screen space reflections что это
The Screen Space Reflection effect creates subtle reflections that simulate wet floor surfaces or puddles. This technique produces lower quality reflections than using Reflection Probes or planar reflections, which create perfectly smooth reflections. Screen Space Reflection is an ideal effect to limit the amount of specular light leaking.
The Screen Space Reflection effect is tuned for performance over quality to make it ideal for Projects running on current-gen consoles and desktop computers. It’s not suitable for mobile development. Because it relies on the Normals G-Buffer, it is only available in the deferred rendering path.

Screen Space Reflection creates more detailed reflections than other methods such as Cubemaps or Reflection Probes, because GameObjects using Cubemaps for reflection cannot self-reflect, and Reflection Probe reflections are limited in their accuracy.
For more information on how to use Screen Space Reflections in Unity, refer to the Screen Space Reflections documentation in the Post Processing package.
- 2019–05–07 Page published
- New feature in 5.6
Screen Space Reflections

SSR (Screen Space Reflection) – эффект, включенный по умолчанию, который добавляет отражения на поверхность объектов. Эти отражения работают в реальном времени.
Поскольку это эффект постобработки, отражается только то, что видно на экране. Поэтому то, что не рендерится на экран не будет отражаться через SSR отражения. При этом границы могут быть размыты.
У SSR всего лишь несколько настроек:
| Свойство | Описание |
| Intensity | Активировать/Деактивировать функцию SSR. Значение в процентах: 0 – минимальное качество, 100 – максимальное. Изначально установлено 50% (с целью достижения лучшей производительности). |
| Max Roughness | Используется для определения, при каком значении шероховатости эффект будет уменьшаться (отлично работает 0,8, меньшие значения могут повысить производительность). |
Vignette
Vignette – Виньетирование. Эффект затемнения по краям изображения при использовании обычных линз. Высококачественные линзы стараются компенсировать его.
Настройки виньетирования можно найти в настройках постобработки под вкладкой Scene Color.
| Свойство | Описание |
| Vignette Intensity | Обеспечивает затемнение по краям экрана. Не влияет на блюм (из-за возможных проблем с производительностью, но при необходимости, можно изменить настройку). Возможное использование: симуляция несовершенств камеры. |
0.0 |
1.0 |
Аудио и звуки
Звуки
Звук имеет огромное значение для создания правдоподобной и виртуальной реальности. От окружающих звуков в уровне, до интерактивных звуков от транспортных средств или оружия, до звука диалога персонажей, звук в игре значит очень многое. Создание звука в игре звучащего так же как он должен звучать может быть трудной задачей. Аудиосистема Unreal Engine 4 предоставляет инструменты и функции формирования звуков в игре, чтобы придать им нужный вид. Это важно, поскольку это означает, что чистый вариант звука может быть создан один раз во внешнем приложении, после чего импортироваться, а затем быть обработанным в движке, чтобы получить соответствующий результат.
Обзор аудиосистемы
Аудиосистема в Unreal Engine 4 состоит из нескольких компонентов, все они работают вместе, чтобы создать нужное звучание. После импорта аудио файла в движок, у вас будет несколько способов представить его на уровне например Volume или Pitch,
для регулировки, а также более тонкой настройки параметров, таких как Sound Attenuation, который определяет, как звук слышен основываясь на вашем расстоянии до него.
Unreal Engine 4 также позволяет строить сложные звуки в виде звуковых сцен и Cue Editor Sound, которые позволяют комбинировать звуки, а также применить модификаторы называемые Sound Cues, чтобы изменить конечный результат.
Есть дополнительные элементы, которые используются для определения того, как звук слышен или воспроизводится, эти параметры описаны на этой странице.
Screen space reflections что это
The effect descriptions on this page refer to the default effects found within the post-processing stack.
Screen Space Reflection is a technique for reusing screen space data to calculate reflections. It is commonly used to create more subtle reflections such as on wet floor surfaces or in puddles.
Screen Space Reflection is an expensive technique, but when used correctly can give great results. Screen Space Reflection is only available in the deferred rendering path as it relies on the Normals G-Buffer. As it is an expensive effect it is not recommended to be used on mobile.

Properties
| Property: | Function: |
|---|---|
| Blend Type | How the reflections are blended into the render. |
| Reflection Quality | The size of the buffer used for resolve. Half resolution SSR is much faster, but less accurate. |
| Max Distance | Maximum reflection distance in world units. |
| Iteration Count | Maximum raytracing length. |
| Step Size | Ray tracing coarse step size. Higher traces farther, lower gives better quality silhouettes. |
| Width Modifier | Typical thickness of columns, walls, furniture, and other objects that reflection rays might pass behind. |
| Reflection Blur | Blurriness of reflections. |
| Reflect Backfaces | Renders the scene by culling all front faces and uses the resulting texture for estimating what the backfaces might look like when a point on the depth map is hit from behind. |
| Reflection Multiplier | Nonphysical multiplier for the SSR reflections. 1.0 is physically based. |
| Fade Distance | How far away from the Max Distance to begin fading SSR. |
| Fresnel Fade | Amplify Fresnel fade out. Increase if floor reflections look good close to the surface and bad farther ‘under’ the floor. |
| Fresnel Fade Power | Higher values correspond to a faster Fresnel fade as the reflection changes from the grazing angle. |
| (Screen Edge Mask) Intensity | Higher values fade out SSR near the edge of the screen so that reflections don’t pop under camera motion. |
Optimisation
- Disable Reflect Backfaces
- Reduce Reflection Quality
- Reduce Iteration Count (increase step size to compensate)
- Use Additive Reflection
Restrictions
- Unsupported in VR
Details
Screen Space Reflection can be used to obtain more detailed reflections than other methods such as Cubemaps or Reflection Probes. Objects using Cubemaps for reflection are unable to obtain self reflection and Reflection Probe reflections are limited in their accuracy.

In the above image you can see inaccurate reflection in the red-highlighted area. This is due to the translation between the Camera and Reflection Probe. Also notice that as this Reflection Probe is baked it is unable to reflect dynamic object such as the colored spheres.

With realtime Reflection Probes (pictured above) dynamic objects are captured but, like in the example above, the position of the reflection is incorrect. In the red-highlighted area you can see the reflection of the white sphere.
Comparing these to the image at the top of the page (using Screen Space Reflection) we can clearly see the disparity in reflection accuracy, however these methods are much less expensive and should always be used when such accuracy is not necessary.
Screen Space Reflection is calculated by ray-marching from reflection points on the depth map to other surfaces. A reflection vector is calculated for each reflective point in the depth buffer. This vector is marched in steps until an intersection is found with another point on the depth buffer. This second point is then draw to the original point as a reflection.
Reducing Iteration Count reduces the amount of amount of times the ray is tested against the depth buffer, reducing the cost substantially. However, doing so will shorten the overall depth that is tested resulting in shorter reflections. Increasing the Step Size increases the distance between these tests, regaining the overall depth but reducing precision.
When using the Physically Based Blend Type the BRDF of the reflective material is sampled and used to alter the resulting reflection, this process is expensive but results in more realistic reflections, especially for rougher surfaces.
When using Reflect Backfaces the effect will also raytrace in the opposite direction in attempt to approximate the reflection of the back of an object. This process vastly increases the cost of the effect but can be used to get approximate reflection on reflective objects with other objects in front of them.
Requirements
- Deferred rendering path
- Depth & Normals texture
- Shader model 3
Сверьтесь со страницей аппаратные возможности графики и её эмуляция для более детального ознакомления со списком совместимого железа.
- 2017–05–24 Page published with no editorial review
- New feature in 5.6
Screen-Space Reflections без пост-эффектов
Возникла задача сделать отражения на воде через Screen-space reflections. Нагуглил на эту тему кучу всего, и везде справедливо утверждают, что это пост-эффект, который делается с помощью Deferred rendering.
Дело в том, что движком я немного ограничен, умеет он максимум OpenGL ES 2, и про Deferred rendering там мечтать не особо приходится.
Есть ли вариант сделать отражения непосредственно во время рендеринга самой воды, когда мы «из первых рук» знаем и вектора нормалей, и позиции пикселей?
Если какой-нибудь пример набросаете (или формулы) — вообще замечательно.
#1
14:55, 10 мар 2017
bugman
Посмотри первый Fable.
Там брали картинку переворачивали отражали сверху вниз, делали небольшую поправку на положение горизонта и получался более менее вменяемый результат.
Разумеется куча багов если приглядеться.
#2
14:56, 10 мар 2017
Юзать лайт мап для всей сцены.
Предварительно запеченную в 3д максе или еще где то.
Как когда то делали для Квейка.
- Mephisto std
- Постоялец
#3
15:06, 10 мар 2017
bugman
SSR — это не пост эффект, это deferred эффект, такой же, как, например, deferred decals.
Для того, чтобы заюзать его, тебе нужны depth buffer и color buffer.
Я не уверен про OGL ES 2, но, скорее всего, перед водой тебе нужно
резолвнуть текущие бэкбуффер и depth-буффер в другие ресурсы, и в SSR использовать уже их.
Т.к. тебе надо только для воды, а не для всей сцены, то остальные составляющие G-buffer, такие как
нормали, roughness и т.п. — тебе не нужны, их можно брать напрямую из воды.
Ziltop
наркоман штоле? при чем тут лайтмап, тут обсуждают SSR
#4
15:06, 10 мар 2017
у нас SSLR на форварде, отложенное освещение там не нужно.
#5
15:09, 10 мар 2017
Mephisto std
Читай что пишет ТС:
Дело в том, что движком я немного ограничен, умеет он максимум OpenGL ES 2, и про Deferred rendering там мечтать не особо приходится.
Я понял что он хочет сделать без постпроцессинга.
Самый лучший вариант, если освещение статичное и не большая сцена, юзать лайтмапу.
Запек уровень в текстуру. Вывел на воду эту текстуру с шейдерными эффектами и подшаманить прозрачность. Ну что бы вода тупо не выглядила как текстура уровня.
Можно отрендерить один раз все 3д модели сцены , которые должны отражаться на воде в текстуру.
И потом эту текстуру применять к воде.
Еще текстуру можно скалировать(если надо), что бы не выводить лишние объекты на воду.
Ну и если камера у тебя не вращается. То пойдет.
#6
15:35, 10 мар 2017
Demiurg-HG
Посмотрю, спасибо.
Ziltop
> Юзать лайт мап для всей сцены.
Речь не про освещение. Лайтмапа есть, но я слабо понимаю, как лайтмапа поможет сделать динамические отражения. Мож я тупой.
Mephisto std
Да, возможно я попутал понятие пост-эффекта и пост-процессинга. Мой фейл. Суть в том, что реализации подразумевают приём готовых нескольких текстур с разной информацией, полученной при рендеринге предыдущих элементов сцены. Я, к сожалению, такого дать не могу. Могу закодировать глубину в альфу, заюзать ColorBuffer из предыдущего фрейма или из текущего буфера для пост-эффекта, но те же нормалмапы уже деть банально некуда — только рендерить повторно. Другое дело, что нормалмапа же на руках во время рендеринга воды, и взяв глубину и цвет всего предыдущего, и расчитав view-direction, можно было бы сделать отражения прямо во время рендеринга воды, а не пост-процессом. Но пока вот я не сведу всё это в кучу.
В RenderMonkey вот набросал упрощённый вариант, но работает оно банально как-то не так.

#7
15:36, 10 мар 2017
Может быть перед рендерингом воды и других прозрачных штук можно запечь текущие буферы цвета и глубины в текстуру. И потом передать их в шейдер с водой. Только по быстродействию это немного ударит)
#8
15:36, 10 мар 2017
Ziltop
Про «предварительно отрендерить» — это уже Planar Reflection. Если бы я такое мог себе позволить, то SSR бы не заморачивался.
- Battle Angel Alita
- Постоялец
#9
15:40, 10 мар 2017
Делай как в DOOM — делай репроджекшн предыдущий кадр и рэймарш его.
#10
16:14, 10 мар 2017
Battle Angel Alita
В DOOM юзается всё тот же Deferred Rendering (http://www.adriancourreges.com/blog/2016/09/09/doom-2016-graphics-study/), просто в качестве цветового буфера юзается предыдущий кадр. Я могу это сделать. Но для меня реально проблема получить не цвет, а NormalMap в качестве отдельной текстуры после рендеринга. Поэтому я и спрашиваю способ сделать отражения в тот момент, когда NormalMap доступна.
- Battle Angel Alita
- Постоялец
#11
16:17, 10 мар 2017
1. В DOOM используется кластерный рендеринг с depth pre-pass + minimal g-buffer
2. зачем тебе нормаль?
3. нормаль ~= cross(ddx, ddy) от текстуры глубины
#12
16:18, 10 мар 2017
bugman
Зачем тебе для sslr нормалка всего буфера??
#13
16:28, 10 мар 2017
Battle Angel Alita
1. Погуглил про кластерный рендеринг, нашёл статью про дум на хабре. Зачитаю, спасибо.
2. Поверхность не идеально ровная. Хотя, наверно, это можно каким-нибудь дисплейсментом банально сделать?
3. Тоже не знал про то, как доставать нормаль из глубины. Только про позиции. Тоже посмотрю, спасибо.
AMM1AK
Не нужна нормалка всего буфера. Только непосредственно отражающей поверхности.
- Battle Angel Alita
- Постоялец
#14
16:35, 10 мар 2017
Когда ты рисуешь воду у тебя УЖЕ есть нормаль этой самой воды.
0.0
1.0