Version: 2019.1
GI cache
Temas relacionados

Light troubleshooting and performance

Las luces pueden ser renderizadas mediante uno de los dos métodos siguientes:

  • Vertex lighting calcula la iluminación únicamente en los vértices e interpola los valores en dichos vértices sobre el resto de la superficie. Algunos efectos de iluminación no están soportados por vertex lighting pero es el método más económico en términos de procesamiento. También, puede ser el único método disponible para tarjetas gráficas antiguas.

  • Pixel lighting se calcula de manera separada por cada pixel en la pantalla. Pese a ser un método más lento para renderizar, pixel lighting permite algunos efectos que no son posible con vertex lighting. Normal-mapping, light cookies y realtime shadows son efectos renderizados únicamente con pixel lights. Además, las formas de foco y los resaltados de point light se ven mucho mejor cuando se renderizan con dicho modo.

Comparación de un punto de luz renderizada en los modos pixel vs vertex
Comparación de un punto de luz renderizada en los modos pixel vs vertex

Lights have a big impact on rendering speed, so lighting quality must be traded off against frame rate. Since pixel lights have a much higher rendering overhead than vertex lights, Unity will only render the brightest lights at per-pixel quality and render the rest as vertex lights. The maximum number of pixel lights can be set in the Quality window for standalone build targets.

Puede configurar una luz para que sea renderizada como pixel light utilizando la propiedad Render Mode. Una luz con el modo establecido a Important tendrá mayor prioridad a la hora de decidir si es tratada como una pixel light. Con el modo configurado a Auto (por defecto), Inuty la clasificará automáticamente en base a cómo se ve afectado un objeto por la luz. Las luces que están renderizadas como pixel lights se determinan sobre una base de objeto-por-objeto.

Vea la página sobre Optimizing Graphics Performance para más información.

Lighting window statistics

The bottom of the Lighting window displays statistics showing important metrics with regard to run time performance. See documentation on the Lighting window for more details.

Rendimiento de las Sombras

Las sombras en tiempo real tienen un alto coste a la hora de ser renderizadas, por lo que deben ser usadas con moderación. Cualquier objeto que pueda emitir sombras primero debe ser renderizado en el mapa de sombras y luego este mapa se utilizará para renderizar los objetos que pueden recibir sombras. Habilitando las sombras tiene un impacto mayor en el rendimiento que la disyuntiva pixel/vertex mencionada anteriormente.

Las sombras suaves tienen un mayor coste de procesamiento que las sombras duras pero esto solo afecta a la GPU y no genera tanto trabajo extra para la CPU.

The Quality window includes a Shadow Distance value. Objects that are beyond this distance from the camera will be rendered with no shadows at all. Since the shadows on distant objects will not usually be noticed anyway, this can be a useful optimisation to reduce the number of shadows that must be rendered.

Un tema particular con las luces direccionales es que una sola luz puede iluminar toda la escena. Esto significa que el mapa de sombras cubrirá a menudo una gran parte de la escena a la vez y esto puede generar en las sombras un problema conocido como “perspective aliasing”. Esto significa que los pñixeles del mapa de sombras cercanos a la cámara se ven ampliados y “gruesos” en comparación con los más alejados. Aunque puede aumentar la resolución del mapa de sombras para reducir este efecto, el resultado que los recursos de renderizado se desperdician para áreas distante cuyo mapa de sombras se veían bien con resoluciones bajas.

A good solution to the problem is therefore to use separate shadow maps that decrease in resolution as the distance from camera increases. These separate maps are known as cascades. From the Quality window, you can choose zero, two or four cascades; Unity will calculate the positioning of the cascades within the camera’s frustum. Note that cascades are only enabled for directional lights. See directional light shadows page for details.

Cómo el tamaño del shadow map se calcula

El primer paso para calcular el tamaño del mapa es determinar el área de la vista de pantalla que la luz puede iluminar. Para las directional lights, toda la pantalla puede ser iluminada, pero para spot lights y point lights, el área es la proyección en pantalla de la forma de la extensión de la luz (una esfera para point lights o un cono para spot lights). La forma proyectada tiene una cierta anchura y altura en píxeles en la pantalla; El mayor de esos dos valores se toma entonces como el “tamaño de píxel” de la luz.

When the shadow map resolution is set to High (from the Quality window) the shadow map’s size is calculated as follows:

  • Directional lights: NextPowerOfTwo (tamañoPixel * 1.9), hasta un máximo de 2048.
  • Spot lights: NextPowerOfTwo (tamañoPixel ), hasta un máximo de 1024.
  • Point lights: NextPowerOfTwo (tamañoPixel * 0.5), hasta un máximo de 512.

Si la tarjeta gráfica tiene 512 MB o más de memoria de vídeo, los límites del mapa de sombra superior se incrementan a 4096 para directional lights, 2048 para spot lights y 1024 para point lights.

En la resolución de shadow Medium, el tamaño del shadow map (mapa de sombra) es la mitad del valor para la resolución High y para Low, es un cuarto del tamaño.

Las Point lights tienen un límite más inferior de tamaño que otros tipos porque utilizan cubemaps para sombras. Esto significa que seis caras se encuentran en esta resolución se mantienen en la memoria de video a la vez. También son bastante caros para procesar, ya que puede haber emisores potenciales de sombras que se necesitan renderizar en todas las seis caras del cubemap.

Resolución de problemas de sombras

Si encuentra que uno o más objetos no están emitiendo sombras, debe comprobar los siguientes puntos:

  • El hardware antiguo de gráficos no puede admitir sombras. Vea a continuación una lista de especificaciones de hardware mínimas que pueden manejar sombras.

  • Shadows can be disabled in the Quality window. Make sure that you have the correct quality level enabled and that shadows are switched on for that setting.

  • Todos los Mesh Renderers en la escena deben configurarse con sus Receive Shadows y Cast Shadows configurados correctamente. Ambos están habilitados de forma predeterminada pero comprueban que no se han desactivado de forma no intencional.

  • Solamente los objetos opacos lanzan y reciben sombras de modo que los objetos que utilizan los shaders incorporados Transparent o un Particle shader no emitirán ni recibirán. Por lo general, puede utilizar los shaders Transparent Cutout en lugar de los objetos con “huecos” como cercas, vegetación, etc. Los Shaders personalizados deben estar iluminados por píxeles y utilizar la Geometry render queue.

  • Los objetos utilizando shaders VertexLit no pueden recibir sombras pero las puede emitir.

  • Con Forward rendering path, , algunos shaders permiten que sólo la directional light más brillante emita sombras (en particular, esto sucede con los shaders incorporados heredados de Unity desde las versiones 4.x). Si desea tener más de una luz de proyección de sombras, entonces debe usar la ruta de renderizado Deferred Shading en su lugar. Puede habilitar sus propios shaders para que admitan “sombras completas” utilizando la directiva fullforwardshadows surface shader.

Soporte del hardware para sombras

Las sombras integradas funciona casi en la mayoría de dispositivos soportados por Unity. Las siguientes cartas son soportadas en cada plataforma:

PC (Windows/Mac/Linux)

  • Por lo general todos los GPUs soportan sombras. Las excepciones ocurren en algunos GPUs muy viejos (por ejemplo, los GPUs hechos en 2005).

Móvil

  • IPhone 4 no soporta sombras. Todos los modelos posteriores que comienzan con el iPhone 4S y iPad 2 apoyan sombras.
  • Android: Requiere Android 4.0 o posterior, y soporte GL_OES_depth_texture. Más notablemente, algunos dispositivos Android basados en Android Tegra 2/3 no tienen esto, por lo que no soportan sombras.
  • Windows Phone: Las sombras solo se soportan en GPUs con clase-DX11 (Adreno 4xx/5xx).

Consolas

  • Todas las consolas soportan sombras.

  • 2017–06–08 Page published with limited editorial review

  • Lighting window statistics added in 5.6

GI cache
Temas relacionados