Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

CommandBuffer.SetShadowSamplingMode

Объявление

public void SetShadowSamplingMode(Rendering.RenderTargetIdentifier shadowmap, Rendering.ShadowSamplingMode mode);

Параметры

shadowmap Цель рендеринга Shadowmap для изменения режима выборки на.
mode Новый режим выборки.

Описание

Добавить команду "установить режим выборки теней".

Текстуры рендеринга карты теней обычно настраиваются для выборки с фильтром сравнения — сэмплер получает значение глубины теневого пространства пикселя экрана и возвращает 0 или 1, в зависимости от того, меньше или больше значение глубины в карте теней. . Это режим ShadowSamplingMode.CompareDepths по умолчанию, который используется для рендеринга теней.

Если вы хотите получить доступ к значениям карты теней, как в обычной текстуре, установите режим выборки ShadowSamplingMode.RawDepth.

Режим сэмплирования карты теней будет возвращен к значению по умолчанию после последней команды в текущем командном буфере.

Проверьте SystemInfo.supportsRawShadowDepthSampling, чтобы убедиться, что текущая платформа среды выполнения поддерживает такой способ выборки теней. Примечательно, что DirectX9 этого не делает.

using UnityEngine; using UnityEngine.Rendering; [RequireComponent(typeof(Camera))] public class RawShadowmapDepth : MonoBehaviour { public Light m_Light; RenderTexture m_ShadowmapCopy; void Start() { RenderTargetIdentifier shadowmap = BuiltinRenderTextureType.CurrentActive; m_ShadowmapCopy = new RenderTexture(1024, 1024, 0); CommandBuffer cb = new CommandBuffer(); // Change shadow sampling mode for m_Light's shadowmap. cb.SetShadowSamplingMode(shadowmap, ShadowSamplingMode.RawDepth); // The shadowmap values can now be sampled normally - copy it to a different render texture. cb.Blit(shadowmap, new RenderTargetIdentifier(m_ShadowmapCopy)); // Execute after the shadowmap has been filled. m_Light.AddCommandBuffer(LightEvent.AfterShadowMap, cb); // Sampling mode is restored automatically after this command buffer completes, so shadows will render normally. } void OnRenderImage(RenderTexture src, RenderTexture dest) { // Display the shadowmap in the corner. Camera.main.rect = new Rect(0, 0, 0.5f, 0.5f); Graphics.Blit(m_ShadowmapCopy, dest); Camera.main.rect = new Rect(0, 0, 1, 1); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3