Search Unity

유니티에서는 실시간 애플리케이션에 사용할 수 있는 고품질 조명 기구를 제작하는 고급 기술을 다룬 전문가 가이드(PDF)를 공개했습니다. 이 가이드를 읽고 게임, 건축 시각화, 영화에 이르는 다양한 분야에 광원 쿠키 및 고급 셰이더를 사용하여 프로젝트에서 현실감 있는 인공 광원을 제작하는 방법을 알아보세요.

그런데 광원 쿠키(light cookies)란 뭘까요? 광원 쿠키는 조명의 셰이프, 강도, 색상을 제어하기 위해 광원의 일부를 차단하는 데 사용되는 2D 텍스처 또는 큐브맵입니다. 광원 쿠키를 사용하는 산업과 사용 사례에 따라 “고보(gobo)”, “큐컬러리스(cucoloris)” 또는 “플래그(flag)”라고 다르게 표현하기도 합니다.

이 광원 쿠키를 사용하면 레이트레이싱 기반(ray-traced) 소프트 섀도우, 컬러 투과(transmission) 및 굴절 커스틱(refractive caustics)까지도 효율적으로 시뮬레이션할 수 있습니다. 사실 이런 효과를 실시간으로 완전히 렌더링하려면 업계에서 가장 강력한 성능을 갖춘 GPU를 사용하는 경우라도 빛이 조밀하게 비추는 환경에서는 비용이 매우 많이 들 것입니다. 따라서 베이크된 광원 쿠키는 실시간 시나리오에서 자연스러운 조명을 만드는 데 여전히 중요한 역할을 합니다.

 

한 가지 좋은 소식을 알려드리자면 빌트인 렌더 파이프라인에서도 (그레이스케일) 광원 쿠키를 활용할 수 있습니다. 따라서 고해상도 렌더 파이프라인(HDRP)과 호환되지 않는 플랫폼에서도 고품질 섀도우를 실시간으로 재현할 수 있습니다.

 

전문가 가이드에서는 오늘날 CGI에서 여전히 발견되는 조명 관련 실수 몇 가지를 정리하고 이러한 실수를 방지하는 방법을 소개한 다음 Photoshop, 3ds Max, Unity와 같은 다양한 2D 및 3D 프로그램을 사용하여 노이즈가 없는 뛰어난 쿠키를 생성하는 데 필요한 모든 단계에 대해 설명합니다.

HDRP의 목표에 맞게 내부 씬에 물리적으로 올바른 방식으로 조명을 비출 수 있도록 Unity에서 노출 및 톤 매핑과 같은 중요한 포스트 프로세싱 효과를 설정하는 방법에 대해서도 설명합니다.

그런 다음 물리적 빛의 강도 단위, 컬러 모드, 섀도우 파라미터, 특정 오브젝트로 조명을 제한하는 데 사용되는 광원 레이어 등 HDRP에서 중요한 광원 프로퍼티에 대해 자세히 검토합니다. 그 후에는 HDRP에서 매우 유연하게 사용할 수 있는 릿(Lit) 셰이더로 샹들리에의 전등갓을 모사하는 다양한 방법을 소개합니다.

마지막으로 조명 기구의 자체 반사와, 반사체 및 전등갓에서 확인되는 구조적인 불완전함을 시뮬레이션하는 마이크로 디테일을 추가하여 최종 마무리 단계에서 매우 현실감 있는 광원을 구현할 수 있도록 커스틱을 생성하는 워크플로를 소개합니다.

 

새로운 전문가 가이드를 통해 사실적인 광원을 만들고 Unity 씬의 시각적 품질을 높일 수 있는 다양한 툴을 활용하실 수 있기를 바랍니다.

시작해 볼까요?

22 코멘트

코멘트 구독

코멘트를 달 수 없습니다.

  1. Will these techniques work for a VR environment? What if the environment is ‘fully dynamic’ (all of the objects are moving and all light sources are realtime)?

    1. Pierre Yves Donzallaz

      2월 19, 2019 7:26 오후

      Yes, it will work as well. The shadows baked in the cookie are only relative to the prop itself, not the rest of the environment. So if you do need real-time shadows, you can enable them simultaneously. Typically a lantern carried by a character or a moving chandelier. The performance considerations associated with real-time shadows remain, however. More often than not, having a good cookie, without real-time shadows, can go a long way (very common in games).

  2. Thank you for the great guide! Could you make the assets available as well to play around with to follow along with the guide?

    1. Pierre Yves Donzallaz

      2월 19, 2019 7:30 오후

      Thank you. The guide provides a link to some of the assets (the baking sphere and a wall lamp), this should be a good starting point. You just need to drop the lamp FBX into the scene and add the baked cookie texture to the Cookie property of the light gameobject. It’ll work for both HDRP and built-in render pipeline.

  3. Can you get Sykoo/Sam to do a video that shows the steps in this document?

  4. The part of the paper on fixing the results in photoshop is ineffective.
    You can rotate the uv faces correctly right in max, and combine them into a single 0-1 uv space, and render into a single 6/1 texture.

    1. Also can you remove my photo, why it it here even? Remove the post as well for good measure.

      1. nevermind, had to login into gravatar (hi 2000s) to change it.

    2. Pierre Yves Donzallaz

      2월 7, 2019 12:38 오후

      “Render to texture” in 3ds Max doesn’t support 6:1 aspect ratio, this means you’d have to crop your frame, and it is less efficient to render a 6144*6144 texture than 6 independent 1024 textures.

      Also, the shader handling the cookie could differ between rendering pipelines: for instance, one could expect a 3*2 format instead of 6*1, and it could have a different expectation for the orientation of the faces. So handling all these operations in Photoshop, with the unique square textures as Smart Objects, is a lot better in terms of iteration time and flexibility, compared to restricting yourself to a fixed UV setup. And it’s a lot faster and easier to rotate the already-rendered frames in Photoshop, instead of having to constantly re-render the frames with different UV orientations until you find the right UV setup… I’ve been there, it’s painful.

      See it as a way to distinguish the content (i.e. the faces rendered in Max, agnostically) and their format (i.e. their orientations and placements in Photoshop). Using your solution would work, for sure, that’s what I did initially, but it isn’t flexible, nor efficient.

      1. Makes sense, what about editor script that handles that automatically? Ill try writing it on weekend.

  5. Amazing guide Pierre, thank you. A bit depressing how much work is required just for light fittings though. Hopefully in a few years this could be more streamlined, all within Unity.

  6. Great to see guides like these being posted. It looks to be quite in depth – I’ll have to bookmark it for later!

  7. It says that HDRP’s Post Processing Stack supports EVs more than +9, however im on the latest HDRP version and it still only goes up to +9. Am i missing something? Is it just for PPS 5.0+?

    1. Pierre Yves Donzallaz

      2월 6, 2019 2:15 오후

      The new post-effects are getting fully integrated to HDRP itself. This is valid for HDRP 5.4, you can grab it from GitHub, “release\2019.1” branch. It isn’t available yet via the Package Manager, which is limited to 5.2.3 when using Unity 2019.1.0b2, as I write this message.

      If you grab the mentioned SRP branch from GitHub, and import the Core, Shadergraph and HDRP packages, you can then use the new exposure system by selecting your camera, adding a “Volume” component to it, and then clicking the “Add component override…” button, and picking the “Exposure” item.

      You can then override the exposure mode to “Auto”, this gives you a range from -10 to +20 EV by default, but you can go way beyond these values if you need to simulate a non Earth-based scenario or extremely bright light sources (e.g. way beyond 100’000 lux).

      You can also use the “Curve” mode, if you want to fully control the exposure with your own custom curve.

      And finally, you can also pick the “Use Physical Camera” mode, which ties the exposure to the new physical camera properties (ISO, aperture, shutter speed, etc.) set in the camera itself.

      It’s all becoming a lot more physically-correct!

  8. Really interesting, thanks so much for the detailed writeup!

  9. Those all look terrible.

    1. You’re being sarcastic I assume?

    2. They are intentionally exaggerated effects to show how they work, not practical examples.

      1. sterling crispin

        2월 6, 2019 5:07 오후

        They’re probably based on photographs of real lights, they look great. Sometimes if you’re being critical and looking for flaws you’ll find them where they don’t exist. This image has all kinds of weird things you could nit pick about its lighting realism but its a photo https://kingfisher.scene7.com/is/image/Kingfisher/Category_Image_Indoor_Wall_Lights

  10. This is a great write up! Thanks!!

  11. So useful!
    ¿ How to set up critical post-processing settings in Unity Settings in Unity, such as Exposure and Tone Mapping, so that your interior scenes can be lit in a more physically-correct way, one of HDRP’s ? YES pease!!

    Pierre, Is only one channel or in the future, there will be colour in the texture?

    1. Pierre Yves Donzallaz

      2월 5, 2019 4:37 오후

      Hello Alan, HDRP does support colored cookie textures yes, you aren’t restricted to grayscale cookies like in the Built-In render pipeline.