Author Topic: Corona_VS_Cycles  (Read 12724 times)

2014-07-04, 20:46:45
Reply #15

tomasd

  • Active Users
  • **
  • Posts: 19
    • View Profile
Cuda doesn't even support recursion... madness!

Caught my eye, so.. this one thing doesn't really matter. If you need recursion in your renderer, you are doing it wrong anyway.

2014-07-04, 20:55:14
Reply #16

Ondra

  • Administrator
  • Active Users
  • *****
  • Posts: 8913
  • Turning coffee to features since 2009
    • View Profile
Corona is doing it wrong, then ;)
Rendering is magic.
Private scene uploader | How to get minidumps for crashed/frozen 3ds Max | Sorry for short replies, brief responses = more time to develop Corona ;)

2014-07-04, 21:09:26
Reply #17

tomasd

  • Active Users
  • **
  • Posts: 19
    • View Profile
Corona is doing it wrong, then ;)

Well, fix it then :-)

2014-07-04, 21:16:28
Reply #18

Captain Obvious

  • Active Users
  • **
  • Posts: 168
    • View Profile
Recursion is pretty standard in rendering. But with Fermi and beyond, CUDA supports recursion just fine (supposedly). OpenCL doesn't, however. Apparently you can do it manually by creating a stack, but it seems pretty roundabout.

2014-07-04, 21:23:25
Reply #19

Polymax

  • Active Users
  • **
  • Posts: 830
  • CG Generalist
    • View Profile
    • maxkagirov.com
what about many 16K textures + 24K HDRI in scene with GPU?
and can you post the scene? I will try setup and render on 4960х(4.5ghz)+ i7 980 (4ghz)
« Last Edit: 2014-07-04, 21:28:52 by Polymax »
Corona - the best rendering solution!

2014-07-04, 21:29:16
Reply #20

tomasd

  • Active Users
  • **
  • Posts: 19
    • View Profile
Recursion is pretty standard in rendering. But with Fermi and beyond, CUDA supports recursion just fine (supposedly). OpenCL doesn't, however. Apparently you can do it manually by creating a stack, but it seems pretty roundabout.

Recursion on GPU, especially if it is in a conditional, is never a good idea.
But even on CPU an explicit stack is often a better idea than recursion.
Function calls are not exactly cheap and if you have a reasonably light-weight function body (e.g., in ray casting), you should avoid recursion.
It cannot really be inlined (quite obviously), the function call will have to flush registers into memory, load function parameters into the registers, set stack and frame pointer and jump. If you have an explicit stack, the compiler has a much better visibility over the whole process and can, for example, make sure that some values that are used all the time (e.g., inverse ray directions) are kept in registers.

Admittedly, the basic path tracing can be written recursively without any really measurable impact (as the body usually does a TON of stuff), but then again, it is generally as easy to write it explicitly and it is not really roundabout.

For the record, the renderer used in the original VCM paper does not use recursion. :-)


Ad big textures: Yeah, big data kills GPU (this paper tries to address is, but the memory is always an issue on GPU: https://mediatech.aalto.fi/~samuli/publications/laine2013hpg_paper.pdf )

2014-07-04, 21:33:38
Reply #21

Ondra

  • Administrator
  • Active Users
  • *****
  • Posts: 8913
  • Turning coffee to features since 2009
    • View Profile
Corona VCM does not use recursion and it still sucks :D
Rendering is magic.
Private scene uploader | How to get minidumps for crashed/frozen 3ds Max | Sorry for short replies, brief responses = more time to develop Corona ;)

2014-07-04, 21:40:24
Reply #22

tomasd

  • Active Users
  • **
  • Posts: 19
    • View Profile
Corona VCM does not use recursion and it still sucks :D

Well, yeah. I am really really curious about the practical usability of the PRMan implementation. And 19 will be free for non-commercial use, so I hope there will be a lot of feedback. The scenes they had in the fxguide article were pretty much like the scenes we had in the paper. No surfaces not visible to camera, so all photons generated contribute in one way or another.

2014-07-05, 18:13:43
Reply #23

maru

  • Corona Team
  • Active Users
  • ****
  • Posts: 9978
  • Marcin
    • View Profile
Raylight, could you post all the render setting that you used in Corona and Cycles? I don't know much about Blender and Cycles but I do know Cycles is somehow adaptive - you can set stuff like "min/max bounces" so it would make it more biased.

2014-07-07, 11:05:11
Reply #24

raylight75

  • Active Users
  • **
  • Posts: 9
    • View Profile
Raylight, could you post all the render setting that you used in Corona and Cycles? I don't know much about Blender and Cycles but I do know Cycles is somehow adaptive - you can set stuff like "min/max bounces" so it would make it more biased.
Yep no problem but there is no big difference between settings, if you have a littlle biased settings the difference is 15-20% maybe the time is could be 15sec.

2014-07-07, 11:14:13
Reply #25

maru

  • Corona Team
  • Active Users
  • ****
  • Posts: 9978
  • Marcin
    • View Profile
And Corona settings.....?

All I can tell for now:

-you have 128 PT samples per pixel in Cycles - how much did you have in Corona? 16 and LSM 2?
-you have max bounces set to 128 and min to 3. In Corona you don't have such adaptive settings. If you were using defaults, it would be 25 bounces.

2014-07-07, 13:13:09
Reply #26

Captain Obvious

  • Active Users
  • **
  • Posts: 168
    • View Profile
-you have max bounces set to 128 and min to 3. In Corona you don't have such adaptive settings. If you were using defaults, it would be 25 bounces.
I'm pretty sure Corona has Russian roulette termination of bounces as well, actually.