Animation Mentor Alumni Badge


octubre 7

If you have been using Blender Cycles, you’re probably familiar with with the term “fireflies”. It’s those annoying bright dots in your render, that makes your image look, well, like you couldn’t solve that problem. This post aims to get rid of, or at least, reduce those fireflies in Blender Cycles.

First of all, they’re normal, there’s a reason for them and they’re not unavoidable nor fatal. There’s an ever-growing list of solutions to this issue. Some fake it, some solve it only partially and some solve it at a very high price, but some times, you get to fix them entirely, combining the following. I’ll go through all the tricks I know in the arsenal, from the basic, to the ludicrous and desperate, one by one, hoping some help you out.

1. Sampling: This is the most obvious way to get rid of them. The reason why you get fireflies in the first place is because of low sampling. The problem with just increasing the sampling, is that it involves a lot of render time, you should go to a sampling amount that doesn’t make your scene too slow to render. Depending on your shaders, you need more or less sampling. But sort of a rule of thumb: if the difference between say 1000 samples and 2000 samples is very little, compared to your render time, then the issue should not be solved with just your samples. I have gotten away with as little as 100 samples, but combining with some of the following.

2. Lighting: In general, Cycles seems to be more firefly-prone with hard lights. They’re always there, they only show up more with them. You also get artifacts in the terminator shadows that land in a surface that has low poly count, so quick tip: soften your lights whenever possible. Besides, there’s almost never an occasion where there are fully hard shadows in reality, unless you’re doing a scene in the dessert or the sea in mid-day or in outer space. Try that.

3. Clamping: It could do the trick. I’m not very fond of this option, because it is precisely the shine from specular surfaces that I want, without the noise. Clamping used in excess, seems to get rid of those really high highlights right off the bat, so use carefully. Don’t use less than 1 and try up to 3 and 4, sometimes you can cut the amount of noise that you want. Since Blender 2.70 clamping is subdivided into direct and indirect, which makes the cutting of the noise even easier, because sometimes the fireflies come from reflected images, and you can sometimes reduce those without affecting your image much.

4. Bounces: You normally don’t need the amount of bounces you say you need, sometimes you just might just need a maximum of 6 or 8 bounces you can achieve the same image. You most probably not even notice the difference, only in your render time, which is always welcome. If you’re not using refractive or reflective surfaces, you might even lower the amount of bounces to 4 and it might still be good, but since we’re talking about light that bounces from surface to surface, you might need to increase the intensity of your lights a little bit after that change.

5. Tiles and GPU: For GPU, use tiles 256 x 256 pixels, that’s usually the optimal size to render at the fastest speed. With CUDA enabled, you might even try increasing your samples, because the time difference might not be so harmful. That being said, if you have to use CPU, keep your tiles 16 x 16 and no more than 64 x 64. Depending on what you have on your scene (mainly types of shaders and polycount), it may vary, and some users have reported to have other successful combinations.

6. Duplicate the size of your render: let’s say you go for a full HD 1920 x 1080 render. What you do is set 200% the width/height of the screen size, this will give you a 3840 x 2160. Then you could resize it back to 1920 x 1080 in your post software and even in Blender. This will make the fireflies smaller than a pixel, which therefore will blend in together with the pixel next to it, above it, below it and so on, because of the antialias. So you might get rid of them, but, then again, making the screen size double, should increase the render time by consequence. You should run a test render of this versus a shot with double the amount of samples, and compare the render times versus the image quality, to decide which one you should use.

7. Fixing/faking in post: Having a decently timed render, but with a little bit of noise, might be able to get fixed with a few filters in photoshop, After Effects or even on Blender. I know for slight corrections, After Effects smart blur, median, reduce noise could do the trick, or a part of it. What you do is animate the seed, so it looks like actual film grain, and then you bring the rendered footage to after effects or Blender and  try this. Remember that when you apply a filter to your footage, there’s aditional rendering involved. Consider that into your own calculations.

8.  Be shader-selective: make sure that the shader you’re using is absolutely necessary, if so, it might need to be rendered separately to save time. Usually I have firefly trouble with refractive surfaces: liquids and glass. Those get rendered separatedly anyway. If you don’t need to use a bothersome refractive surface, or that particular shader, is too little, or the shot is still or there is very little movement involved with it, you could pre-render it from the camera angle and add it later to your shot. It may sound farfetched, but you could be amazed how often you get to do this kind of things for the sake of your render time and your sanity.

9. Baking: in every shot, all non-refractive and/or non-reflective object that stays static in the shot, can have its textures baked and apply as a shadeless  to the shot and this could lower the render time significantly. You would probably need a shadow pass and your character layer, but you eliminate all possibility of fireflies in your background, through a couple of pre-renders.

10. No caustics: This extremely basic, but I wanted you to read No.8 first. If your scene does not have any refractive surfaces, click on that checkbox. You’re welcome.

11. Embrace the fireflies: When everything else fails, or you just don’t have enough time to fix, correct or fake them, you could just animate the seed and leave it as is, but you have to be very convincing when you get asked about it: say you did it on purpose, and that the grain is part of your style. Some people will believe you and even praise you for it.

There are several websites that propose many alternatives, these are the ones that have worked for me so far. I want to hear your experience with fireflies. Write on the comments below, right after the spanish version.


Nope, not that kind of firefly

Si has estado usando Blender Cycles, probablemente has oído hablar del término “fireflies” o luciérnagas. Son esos puntos luminosos en tu render que hacen que tu imagen se vea como, bueno, como si no pudiste resolver el problema.

Primero que nada, son normales, tienen su razón de ser y no son inevitables ni fatales. Hay una lista (la cual sigue creciendo) de soluciones a esto. Algunos lo esconden, otros lo fingen, otros lo resuelven solo parcialmente y otros lo resuelven a un precio muy alto, pero algunas veces, se puede resolver completamente, combinando lo que he listado a continuación. Voy a ir por cada uno de los trucos que conozco en el arsenal, desde lo básico, hasta lo ridículo y desesperado, uno por uno, y hablar de lo que yo he experimentado con ellos, esperando que te sirvan de ayuda.

1. Sampling: Esta es la manera más obvia de deshacerse de las luciérnagas. La forma más inmediata de obtener luciérnagas es por tener un sampling bajo. El problema con aumentar los samples, es que involucra mucho tiempo de render, debes tener un monto de samples que no haga tu escena demasiado lenta de renderear. Dependiendo de tus shaders, puedes necesitar más o menos sampling. Pero una especie de norma general: si la diferencia entre digamos 1000 samples y 2000 samples es muy poca comparada con tu tiempo de render, entonces el problema no debe ser resuelto únicamente con tus samples. Yo me he escapado hasta con 100 samples en algunas ocasiones, pero combinando con algunas de las siguientes alternativas.

2. Iluminación: En general, Cycles parece ser más propenso a las luciérnagas con luces duras. Siempre están ahí, pero se notan más con ellas. También obtienes artefactos en terminator shadows que caen en una superfice con bajo conteo de polígonos, así que un pequeño consejo: suaviza tus luces cuando puedas. Además, es muy poco frecuente la ocasión con sombras completamente duras en la realidad, al menos que estés haciendo una escena en el desierto o el mar a mediodía o en el espacio. Trata eso.

3. Clamping: Puede hacer el truco. No suelo ser muy amigo de esta opción, porque es precisamente el brillo que quiero, sin el ruido visual. Clamping, usado en exeso, pareciera deshacerse de los brillos desde el principio, así que úsalo con cuidado. No lo hagas menos de 1 y prueba hasta 3 y 4, a veces puedes lograr que corte exactamente la cantidad de sucio que deseas. Desde Blender 2.70 clamping es dividido en directo e indirecto, lo cual hace el recorte aun más fácil, porque a veces el ruido viene de un objeto que se está reflejando en el objeto principal y puedes reducir esas luciérnagas sin afectar demasiado tu imagen.

4. Rebotes: Normalmente no necesitas la cantidad de rebotes de luz que dices necesitar, algunas veces con solo un máximo de 6 ú 8 rebotes, puedes lograr la misma imagen. A veces no se logra notar la diferencia, solo en tu tiempo de render, que siempre es bienvenido. Si no estás usando superficies refractivas o reflectivas, puedes bajar la cantidad de rebotes hasta 4 y tal vez aun se vea bien, pero como estamos hablando de rebotes de luz de superficie a superficie, puede que necesites aumentar la intensidad de tus luces un poco después de este cambio.

5. Tiles y GPU: Para GPU, usa tiles de 256 x 256, es usualmente el tamaño que mejor maneja. Con CUDA funcionando, puede que hasta puedas aumentar tu cantidad de samples con poca diferencia de tiempo de render. Habiendo dicho esto, habrán ocasiones en las que necesites CPU, entonces mantén tus tiles entre 16 x 16 y no más de 64 x 64. Dependiendo de lo que tengas en la escena (léase principalmente shaders y conteo de polígonos), puede variar, y algunos usuarios han reportado tener otras combinaciones que les funcionan mejor.

6. Duplica el tamaño de tu render: digamos que vas por un full HD: 1920 x 1080. Lo que haces es poner 200% del alto y ancho de la pantalla, cosa que te dará una imagen de 3840 x 2160, lo cual luego puedes reajustar a 1920 x 1080 en tu programa de post, incluso en Blender. Esto hara que las luciérnagas sean más pequeñas que un pixel y en tu programa de post, se mezclarán con el pixel que está a su lado, al otro, arriba y abajo, por el antialias. Puede que logres deshacerte de ellas de esta manera también, pero nuevamente, hacer la pantalla el doble de tamaño, aumenta también tu tiempo de render, por consecuencia. Debes hacer un render de prueba y comparar contra un render con el doble de samples y ver los tiempos y la calidad de imagen, para decidir cual debes usar.

7. Ajustar/fingir/esconder en post: tener un render decente de tiempo, con un poco de ruido, es posible arreglarse con uso responsable de filtros en photoshop, After Effects e incluso con Blender. Se que para correcciones pequeñas, se puede usar el smart blur, median o reduce noise de After Effects y alguno puede hacer el truco, o parte del truco. Lo que haces es animar el seed, así que se ve como grano normal, y luego traes el pietaje rendereado a After Effects o Blender y lo intentas. Recuerda, cuando aplicas un filtro, sea en After Effects o en el compositor de Blender, hay un render adicional involucrado. Considera esto en tus cálculos.

8. Se selectivo con tus shaders: asegúrate que el shader que estás usando sea absolutamente necesario, de ser así, hazle render de manera separada para ahorrar tiempo. usualmente tengo problema de luciérnagas con superficies refractivas: líquidos y vidrio. Esos suelen renderearse separadamente de todas maneras. Si no necesitas usar una superficie refractiva, o ese shader en particular, ocupa poco del espacio de tu pantalla, o hay poco movimiento relacionado al objeto, puedes pre-renderear ese objeto a parte y pegarlo a tu toma luego. Te sorprendería cuan frecuente se hace estas cosas en nombre del tiempo de render y nuestra salud mental.

9. Baking: En toda toma, todo objeto no-refractivo y/o reflectivo que se mantenga estático en la toma, puede aplicársele un bake y aplicarse como un shadeless a la toma y esto reduce el tiempo de render significativamente. Luego tendrás que probablemente tener un pase de sombra y el de tu personaje, pero eliminas toda posibilidad de luciérnagas en tu fondo, por medio de unos cuantos renders previos.

10. No caustics: Básico, pero necesitabas leer No. 8 primero. Si tu escena no tiene superficies refractivas, haz click en esa cajita. De nada.

11. Acepta las luciérnagas: Si todo lo demás falla, o simplemente no tienes interés en arreglar, corregir o disimularlas, puedes animar el seed y dejarlo tal cual, pero debes ser muy convincente cuando te pregunten por ellas. Recuerda decir: “lo hice a propósito” y que el grano es parte de tu estilo. Algunas personas te creerán y hasta te lo aplaudirán.

Hay muchos sitios que hablan de esto y proponen muchas otras soluciones, éstas son las que han funcionado para mí. Quiero escuchar de tu experiencia con las luciérnagas. Escribe en los comentarios.


Tags: , , , , , , , , , , , , , , , , , , , , , , , , ,

Posted on 2014/10/07 No Comments leave comment


Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *