Weird looking artifacts when light sources get close to the object

Hi all,

When some light source (point light, area light or spot light) got close to the object, it created some wired artifacts, especially with point light which made the engine render some strange things:

  1. Point Lamp:
  2. Spot Lamp:
  3. Area Lamp:
  4. Reference render result in Cycle with point Lamp

Actually I tried to test this with one of the example “lamp_point.blend”, and it had the similar artifacts:

Anyone has the same issue? Or maybe it is related to my hardware?
Platform: Windows 10 Pro, Intel Core i7-6700k, Nvidia GTX980

Hello,

It’s the dumb ‘shadow bias’ calculation in action.

Slightly increasing the ‘Bias’ in lamp data properties should help to get rid of the shadow acne. If object is very close to the lamp then increasing the ‘Field of View’ may be needed to properly capture all of it. The lamp basically acts like a camera in that case for ‘capturing shadows’.

I hate this value tweaking and hope to replace this with a more automated system. :slight_smile:

Edit: The point lamp on the first screenshot still looks weird / glitched, will take a look.

Hi Lubos,

I have tried to increase the Bias and it works, thanks for your advice.

About the point lamp on the first screenshot, seems the problem is specific for the point lamp type. No matter how far I placed the point lamp there were always some strange things happening in the rendering.

Hope this will help.

Hi lubos,
I tested the new example “constraint.blend” with a point lamp, and I got the strange rendering again (as seen below).
Considering it is a new example, it must run fine in your side, so it might be some platform specific thing.

if I swap out the point lamp to spot lamp and change the Clip/Bias setting, I can get correct rendering.

Edit: OK I found that if I turn off the setting “Omnidirectional Shadows” of the lamp it looks OK…is this new to build 10?

Edit 2: This might be the real problem, I cannot use my GTX980 in Armory (Build 10):

Comparing to the official 2.78c:

Hm, it seems to be related to the use of cubemaps for shadows then. By default, point lamp casts shadows in all directions (as it should) by storing data in a cubemap.

With ‘Omnidirectional Shadows’ disabled, shadows are cast only in one direction (the one lamp is looking at, this is not ‘correct’ but can save performance) - a plain texture is used for shadows, no cubemap.

For some reason the glitches do not show up on my gtx 1060 - I will try to look if there are any opengl errors reported. Could you check if the “constraint.blend” example is it still glitching for you when you run it in Browser?

Hi lubos,

I just tested to run the “constraint.blend” example in browser, there is NO glitch.
Seems the glitch is only presented when I run in view port or Krom.

By the way, when running some of the examples with build 10, I got various errors. I put a list here for your reference:

game_mazeball, scene4: kraffiti.exe crashed as shown below. After some checking I found it was due to the packed HDR image can not be used for some reason. I unpacked the HDR image then it run OK.

grease_pencil: It can be run, but I only saw a white screen… (It was supposed to show the grease pencil animation right?)

logic_gate, navmesh, physics_constraint: During the first run it failed to build with the error below. Then I cleaned the project and re-run it became OK.

script_genmesh: Build failed with this error:

Same as Milo concerning the Grease Pencil. All I see is white when I run the game via ‘p’ or ‘f5’.

Thanks for reports guys.

  • @Milo: Did you get the latest examples from GitHub? Some of them were updated to compile with newest build, due to new input system. That should get rid of the ‘Class iron.system.Input has no field started’ error.

  • Investigating kraffiti.exe crash, have to get rid of that (several reports now - seems to be Windows only). kraffiti is used for processing textures into the formats best suited for target platform.

  • grease_pencil is indeed broken, will try to fix by next build.

@lubos: Yes I did get the latest example of “script_genmesh” from github, which was the only example where I got the ‘Class iron.system.Input has no field started’ error.