Action disabled: source

사용자 Beast 설정

유니티가 기본적으로 사용하는 다른 종류의 baking 설정이 필요하면, 이른 사용자 Beast 설정에 명시할 수 있습니다.

Beast는 xml 포맷으로 정의된 bake 설정을 읽습니다. 보통, 유니티는Lightmap에디터 윈도우의 Bake 창에서 선택된 설정과 다른 내부 설정들을 기반으로 xml 파일을 생성합니다. Beast의 xml 포맷의 설정을 명시하므로, 그러한 설정들을 덮어쓸 수 있습니다.

유니티가 자동으로 xml 파일을 생성하게 하기 위해서는, Lightmap 에디터 윈도우의 오른쪽 위에 있는 탭 메뉴를 클릭하세요. 그리고 Generate Beast settings file을 선택합니다. lightmaps 옆에 BeastSettings.xml파일이 프로젝트에 보이시는 것을 알 수 있습니다.그리고, Lightmap 에디터가 xml 설정파일들이 다음의 bake 동안 유니티의 설정을 덮어쓴다는 것을 알려줍니다 open 버튼을 클릭하여, 사용자 설정을 편집합니다.

조정 샘플링

Beast는 라이트 맵을 샘플링할 때 조정 샘플링 방식을 사용합니다. 조명은 한 지역에서 추가 샘플들을 위치 시키기 위한 Beast를 위한 사용자 정의 명암의 threshold와는 달라야 합니다. 샘플 지역은 Min과 Max의 샘플 비율에 의해 정의됩니다. 사용자는 비율을 -4..4범위에서 지정합니다. 이는 Beast 샘플들이 픽셀당1/256 샘플에서 256샘플임을 의미합니다(공식은 4^샘플비율). 상품 목적(Min 샘플 비율=0) 을 위해서는 픽셀당 적어도 하나의 샘플을 사용할 것을 권유합니다. 낮은 샘플링(Undersampling)은 카메라가 큰 UV 패치를 사용하여 표현(render)하거나 질감을 baking 할 때 유용합니다. Beast가 모든 필요한 샘플을 한 지역에서 끄집어내면, 마지막 픽셀값은 필터와 함께 사용되어 가중치가 부여됩니다. 필터가 생산하는 보기는 필터 커널의 사이즈와 사용하는 필터 타입에 의존합니다. 사용 가능한 필터들은 다음과 같습니다:

  • Box: 각 샘플은 균등하게 중요합니다. 실행 시 가장 빠른 필터이나, 흐린 결과를 줍니다.
  • 삼각형 (Triangle): 필터 커널은 tent 이며, 이는 원거리 샘플들은 중요하게 간주되지 않음을 말합니다.
  • 가우스(Gauss): 필터 커널로 가우스 함수를 사용합니다. 가장 좋은 결과를 줍니다. (소음을 제거하며, 세부사항들을 보존합니다).

더 많은 필터들이 사용 가능하며, 위의 세 개가 가장 유용합니다. 커널(필터) 크기는 1..3 영역의 픽셀들로 주어집니다. Beast는 사실상 필터링 시 모든 서브 픽셀들을 사용합니다. 이는 Photoshop에서 필터링 후에 작업하는 것 보다 더 좋은 결과를 보입니다.

AASettings
»>samplingMode사용할 샘플링 방식/계획. 디폴트는 Adaptive.Adaptive: under/over 샘플링을 위한 어뎁티브 anti-aliasing 방식 (픽셀당1/256부터256 샘플들까지). SuperSampling: super sampling 을 위한 Anti-aliasing 방식 (픽셀당1-128 샘플들).
»>minSampleRate최소 샘플 비율 설정, 기본값은 0 (즉 픽셀당 하나의 샘플).
»>maxSampleRate최대 샘플 비율 설정, 사용되는 식은4최대 샘플비율(픽셀당1, 4, 16, 64, 256 샘플들)
»>contrast더 많은 샘플이 필요하면 컨트롤을 위한 명암 값. 더 낮은 값이 더 많은 샘플을 강제함.
»>filter어떤 필터 타입이 사용할지 설정. Baking을 위한 가장 유용한 것들은 박스, 삼각형, 가우스(Gauss)임.
»>filterSize픽셀에서의 필터사이즈 설정(1 에서 3).

질감 Bake

이 설정들은 어떤 식으로 lightmaps이 rasterize화 되고, 질감으로 읽혀지는 등의 인공적인 부속물들을 제거하는데 도움을 줍니다.

TextureBakeSettings
»>edgeDilation렌더된 지역을 지정한 픽셀들의 수로 확장합니다. 이는 인위적 산물이 렌더된 지역 주위에서부터 GPU가 빈 픽셀들을 필터하는 것이 일어나지 않도록 하는 그런 인공적 산물(artifact)을 막는데 필요합니다.
»>bilinearFilterbilinearFilter는 GPU가 bilinear 필터링을 적용했을 때 lightmap에서의 데이터가 정확한지 확인하기 위해서 사용됩니다. 이는 아틀라스(atlas)가 촘촘히 묶여졌을 때, 가장 주목할 만합니다. 두 개의 다른 UV 패치들 사이에서 오직 하나의 픽셀만 있다면, Beast의 bilinear 기능은 그 픽셀이 정확한 패치로부터 색이 채워져 있는지 확인합니다. 이는 빛의 솔기(seam)들을 최소화 합니다.
»>conservativeRasterizationconservativeRasterization 는 UV 차트가 전체 픽셀을 덮지 않을 때 사용합니다. 만약 그런 레이아웃이 사용되면, Beast는 실수로 texel을 놓일 수 있습니다. 만약conservative rasterization 이 사용되면, Beast는 UV 레이아웃 이 존재하면 이를 찾도록 보장할 것입니다. Beast는 픽셀에서 어떤 UV 레이아웃이든 선택할 것입니다. Conservative Rasterization는 종종 UV 아틀라스가 낮은 해상도로 촘촘히 싸여져 있거나 많은 얇은 오브젝트들이 존재하면 필요합니다.
»>bgColorLightmap의 배경 색상.

환경

Beast 에서 환경 설정은 광선이 장면에서 모든 기하를 잃게 되었을 때 어떤 일이 일어나는 지를 제어 합니다. 환경은 이미지 기반의 라이팅(IBL)을 위한 lat-long 포맷의 HDR이미지 혹은 constant 색상일 수 있습니다. 환경들은 오직 아주 멀리 떨어진 효과들, 즉 방향성 컴포넌트들만이 중요한 경우를 위해 사용된다는 점을 주목 해야 합니다.

환경을 정의하는 것은 바깥의 기분 좋은 조명의 결과를 얻기 위한 좋은 방법이지만, bake 시간을 증가 시킬 수 있습니다.

EnvironmentSettings
»>giEnvironment환경의 종류: None, Skylight 또는 IBL.
»>giEnvironmentIntensity광도를 위한 스케일 팩터, 화면에 맞는 HDR 질감을 스케일 하거나 감마 수정(correction) 에러들을 피하기 위해 사용. (Unity: Sky Light Intensity)
»>skyLightColorConstant 환경 색상. 타입이 Skylight일 때 사용. 감마 수정(correction)에 의한 과급(boosting)을 피하기 위해서 색상을 광도 1.0 이하로 유지하는 것이 종종 좋은 생각입니다. 광도를giEnvironmentIntensity 설정을 사용하여 boost 하십시오. (Unity: Sky Light Color)
»>iblImageFileHigh-dynamic 영역의Long-Lat 포맷의 IBL 배경 이미지, HDR .EXR, 또는 absolute path.

그림자들

광선 자취 그림자들을 위한 설정들.

RenderSettings
»>bias그림자 광선들의 이중 교차를 피하기 위한 에러 시작점(threshold). 예를 들어, 그림자 광선은 일차 광선처럼 같은 삼각형을 교차해서는 안됩니다. 그러나 제한된 산술적 정확도 때문에 이런 일이 발생할 수 있습니다. 편향(bias) 값이 이 문제를 제거하기 위해서 움직입니다. 0으로 설정되면 이 값은 장면의 크기에 따라 자동으로 계산됩니다.
»>maxShadowRays포인트당 그림자 광선들의 최고 개수 입니다. 이는 광원을 위한 소프트 그림자를 생성하는데 사용합니다. 소프트 그림자의 질의 대가로 렌더링 시간을 줄입니다. 이는shadowSamples 설정이 이 값보다 높은 광원들로 보내어진 광선들의 최대 개수를 줄입니다. 그러나, shadowSamples 들이 더 낮은 값으로 설정되면, 이 수를 올리지는 않을 것입니다.
»>maxRayDepth완료되기 전에 하나의 광선이 가질 수 있는 bounce들의 개수. Bounce는 반사되거나 굴절됩니다. 광선이 불투명한 오브젝트에 닿고 그림자에 빛이 들어오기 전에 더 많은 투명한 삼각형을 거치게 되면 이 값을 올립니다. 일반적인 실패 경우: 산의 그림자에 위치한 알파테스트 된 잎들을 가진 나무들.

전체 조명

Global Illumination 시스템은 간접적인 조명을 계산하기 위하여 두 개의 분리된 알고리즘들을 사용할 수 있습니다. Path Tracer 와 같은 빠른 알고리즘을 사용하여, 빛의 bounce들의 다중 레벨들을 계산할 수 있습니다. 더 빠른 높은 성능의 global illumination 렌더러를 얻기 위해 Final Gather를 사용해서 마지막 bounce를 여전히 계산 할 수 있습니다. 두 서브시스템 모두 필요하면 효과를 증가시키기 위해서 광도와 포화(Saturation)의 개별적 컨트롤을 가집니다.

FinalGather를 주요 통합자(integrator)로 사용하고, None이나 PathTracer를 두 번째 integrator로 사용하길 권합니다. 유니티는 기본으로 첫 번째 옵션(final gather only)을 사용합니다. 그러므로, 대부분의 경우 가장 좋은 질의 렌더를 양산합니다. Path Tracer는 많은 비 간접적 bounce들이 필요할 때 사용하여야 합니다. 그리고, 좋은 질의 Final Gather-only 솔루션은 렌더하는데 많은 시간이 걸립니다.

GISettings
»>enableGITrue로 설정하는 것은 Global Illumination을 가능하게 합니다.
»>primaryIntegrator간접 빛의 최종 계산을 위해 사용되는integrator. FinalGather가 기본 설정.
»>secondaryIntegrator간접빛의 최초 바운스들을 위해 사용되는 integrator. 기본은 None, PathTracer는 선택.
»>primaryIntensity포스트 프로세스로서, RGB의 결과로부터의 첫 번째 integrator의 색상을 HSV로 전환하며, V값으로 비율 조정합니다. (Unity: Bounce Intensity)
»>primarySaturation포스트 프로세스로서, RGB의 결과로부터의 첫 번째 integrator의 색상을 HSV로 전환하며, V값으로 비율 조정합니다.
»>secondaryIntensity포스트 프로세스로서, RGB의 결과로부터의 두 번째 integrator의 색상을 HSV로 전환하며, S값으로 비율 조정합니다.
»>secondarySaturation포스트 프로세스로서, RGB의 결과로부터의 두 번째 integrator의 색상을 HSV로 전환하며, S값으로 비율 조정합니다.
»>diffuseBoost이 설정은 어두운 장면에서 빛의 바운싱을 과장하기 위해서 사용됩니다. 1보다 큰 값으로 설정하는 것은 GI 연산을 위해 재료의 색상을 1로 분산 시킵니다. 전형적인 사용 경우는 암흑 물질들이 사용되는 장면들입니다. 강력한 광원을 사용한 암흑 물질을 보강하는데 쉽기 때문에 방향성 라이팅 에서 쉽게 일어납니다. 간접 라이트는 바운스된 빛이 빨리 희미해지므로 이 장면들에서 매우 미묘합니다. 발산 boost를 설정하는 것은 이를 보강할 것입니다. 0에서 1사이의 값은 diffuse 설정 값을 비슷하게 감소 시킬 것이며, 빛의 바운스를 재료값 0이라로는 유효하지 않게 할 것입니다. 실제 일어나는 연산은 컴포넌트당 pow(colorComponent, (1.0 / diffuseBoost))입니다. (Unity: Bounce Boost)

Final Gather

아래의 설정들은 Final Gather 솔루션의 질이나 정확성을 컨트롤 할 것입니다. 일반적인 사용 시나리오는 다음과 같습니다:

  1. 각각의baking 설정 시, Contrast Threshold 와 Rays들의 개수가 조정됩니다. 기하의 복잡도와 빛의 설정에 의존하므로 완벽한 설정들은 없습니다.
  2. Visibility 와 Light Leakage 감소는 비싼 연산이므로 실제적인 빛의 누출 문제를 고치는데 사용해야 합니다. 이러한 설정들은 빛의 누출 문제가 Global Illumination연산들에 의해 발생하였을 때 도움이 됩니다. 매우 보편적인 빛의 누출 현상은 하나의 평면을 갖고 두께가 없는 벽에서 일어납니다. 그 상황에서 누출 된 빛은 GI에서 나온 것이 아닙니다.
  3. 그래디언트 시작점(Gradient threshold)은 코너주위에 하얀 후광들이 있으면 변화되어야 합니다.

2 와 3 단계는 대부분의 경우 많은 변화를 필요로 하지 않습니다.

GISettings
»>fgContrastThresholdprecalculation동안 점들 사이에 명암의 차이들을 위하여 final gather가 얼마나 sensitive 한지를 컨트롤합니다. 만약, 명암의 차이가 주변 점들을 위한 시작점보다 높으면, 더 많은 점들이 그 지역에 생성될 것입니다. 그들이 정말로 필요한 곳(예: 그림자 경계선 또는 간접 빛이 빠르게 변하는 지역)의 점들을 위치시키는 알고리즘을 설명합니다. 그러므로, 이 시작점은 장면에 생성될 점들의 개수를 조정해서 컨트롤합니다. Final gather 광선들의 낮은 숫자들이 사용되면, 점들은 더 높은 편차를 가지고, 더 높은 명암 차이를 보임을 명심하십시오. 그 경우는 명암의 시작점은 점들이 뭉치거나 샘플당 많은 광선이 사용되는 것을 막도록 올려져야 합니다. (Unity: Contrast Threshold)
»>fgRays각 Final Gather 샘플이 취한 광선의 최대값. 더 많은 광선들은 더 좋은 결과를 내지만, 평가하는데 더 시간이 걸립니다. (Unity: Final Gather Rays)
»>fgCheckVisibility벽들을 통과하는 빛의 누출을 줄이기 위해서 이를 켜십시오. 점들이 보간(interpolate) 하기 위해서 모였을 때, 점들 중 몇몇은 다른 쪽의 기하에 위치할 수 있습니다. 그러므로, 빛들은 기하/형상(geometry)을 통과할 때 흐트러집니다. 이를 방지하기 위해서 Beast는 보이지 않는 점들을 거절 할 수 있습니다.
»>fgCheckVisibilityDepth얼마나 많은 bounce를 할지를 컨트롤 합니다. 가시(visibility) 검사가 수행되어야 합니다. multi bounce Final Gather를 사용할 때, 빛의 누출 현상을 경험하실 때에만 이를 조정해주세요.
»>fgLightLeakReduction이 설정은 final gather를 첫 번째 GI로 사용하고, path tracing을 두 번째 GI로 사용하였을 때 벽들을 통과하는 빛의 누출 현상을 줄이기 위해서 사용할 수 있습니다. 빛의 누출은 path tracer가 벽의 다른 쪽 면의 값들을 필터 할 때 일어날 수 있으며, 두번째 GI fallback으로 final gather를 사용해서 벽들이나 코너들에 가깝게 샘플 할 때 줄여집니다. 이를 가능하게 하면, final gather의 깊이 3이 자동으로 사용될 것이지만, 더 높은 깊이들은 벽들이나 코너에서만 사용될 것입니다. 이는 path tracing이 두 번째 GI 로 사용했을 때에만 사용가능 합니다.
»>fgLightLeakRadius두 번째 GI대신에, 벽들로부터 얼마나 더 멀리 final gather가 다시 호출 되여 지는 지를 제어합니다. 0.0이 사용되면, Beast는 좋은 값을 추정 하려고 시도 할 것입니다. 빛의 누출이 제거되지 않는다면, 더 높은 값으로 수동으로 설정할 수 있습니다.
»>fgGradientThresholdinterpolation시에 어떻게 조도 증감(irradiance gradient)이 사용될지를 컨트롤합니다. 각 점은 각각의 조도 증감을 저장하여 보간(interpolation)을 증가하기 위해서 사용할 것입니다. 몇몇 경우에는 그래디언트의 사용이 하얀 후광과 다른 인공물(artifact)을 초래할 수 있습니다. 이 경우 시작점은 그러한 인공물을 줄이기 위해서 사용될 수 있을 것입니다. (low또는 0으로 설정). (Unity: Interpolation)
»>fgInterpolationPoints보간을 위한final gather점들의 개수를 설정합니다. 더 높은 값이 더 부드러운 결과를 줍니다. 그러나, 세부적인 것 또한 부드럽게 처리합니다. 이 값을 증가했을 때 빛의 누출이 벽들을 통과할 때 나타나면, 샘플 가시(visibility)를 체크 하는 것이 문제를 해결 합니다. (Unity: Interpolation Points)
»>fgNormalThreshold얼마나 final gather가 법선들(normals)에서의 점들의 차이에 민감해야 하는지를 컨트롤 합니다. 작은 값은 높은 곡률의 지역에서 더 많은 점들을 줄 것입니다.
»>fgDepth간접 빛의 바운스들의 개수를 컨트롤합니다. 더 높은 값은 더 정확한 결과를 주지만, 렌더링 시간의 증가 비용이 생깁니다. 더 저렴한 멀티 바운스 GI를 위해서는, 깊이를 증가하는 대신에 Path Tracer를 두 번째integrator로 사용합니다. (Unity: Bounces)
»>fgAttenuationStart감쇠(attenuation)가 시작되는 거리입니다. 이 거리 이전에는 감쇠가 없습니다. Final gather 라이팅에 감소 효과를 주기 위해서 사용됩니다. fgAttenuationStop 이 0.0 보다 높게 설정했을 때 “enable” 됩니다.
»>fgAttenuationStop감쇠(attenuation)가 멈추는 거리(0으로 희석)를 설정합니다. 이 거리를 넘어서면 0의 광도입니다. 감쇠설정을 가능으로 하려면, 이 값을 0.0 보다 높게 설정하십시오. 기본값은 0.0 입니다.
»>fgFalloffExponent라이팅(lighting)이 거리에 의해 저하되는 비율을 조정하기 위해서 사용됩니다. 더 높은 지수는 더 빠른 저하를 주게 됩니다.
»>fgAOInfluenceFinal Gather를 잔잔한 폐색(Ambient Occlusion)과 혼합하기 위해서 사용합니다. 0..1. 0의 범위는 폐색(occlusion)이 없음을 의미하며, 1은 전체 폐색을 의미합니다. 만약 Final Gather가 multiple depth를 사용하고, Path Tracing을 두 번째 GI로 사용한다면, 결과는 밋밋(flat)해 집니다. 더 높은 명암을 얻을 수 있는 좋은 방법은 계산시ambient occlusion을 인자로 사용하는 것 입니다. 이러한 Ambient Occlusion 알고리즘은 오직 final gather의 연산에만 영향을 미칩니다. Lightmapping 창에 드러나지는 Ambient Occlusion은 분리된, 기하/형상 통과(geometry-only pass)에 의해 다르게 연산 됩니다.
»>fgAOMaxDistance폐색 광선들을 위한 최대 거리입니다. 이 거리를 넘어서면, 광선은 폐색되지 않는 것으로 간주합니다. 닫혀진 방과 같은 닫혀진 장면들의 전체 폐색(full occlusion )을 피하기 위하여 또는 AO contribution을 접게(creases)하기 위해 사용 가능합니다.
»>fgAOContrastAmbient occlusion을 위한 명암을 조정하기 위해 사용 가능합니다.
»>fgAOScale폐색 값을 위한 비율 조정. 그림자 효과를 늘이거나 줄이기 위해서 사용합니다.

경로 추적기

빠른 다중 바운스 global illumination을 위해서 패스 트레이싱(path tracing)을 사용합니다. Baking을 위한 첫 번째 integrator로 사용되어서는 안됩니다. 왜냐하면, 결과는 깔끔하지 않기 때문에light map에서 좋지 않습니다. 첫 번째 integrator로 설정 등을 조정하고 캐쉬 공간을 확보하고, 정확도가 좋은 지를 확인하는데 사용 할 수 있습니다. 의도 되는 사용법은 이를 두 번째 integrator로 설정하고, 첫 번째 integrator로는 하나의 바운스 final gather를 가지는 것입니다. 정확성과 점의 크기는 캐쉬(cache)가 충분히 미세(fine grained)한지 확보하기 위해 조정될 수 있습니다.

GISettings
»>ptAccuracy각각의 샘플 요소(pixel, texel or vertex)를 위해서 추적될 경로의 개수를 설정합니다. 미리 보기 렌더링을 위해서는 0.5나 0.1 과 같은 낮은 값들이 사용될 수 있습니다. 이는 픽셀들의 1/2에서 1/10이 경로를 생성하게 되는 것을 의미합니다. 좋은 퀄리티를 위해서는 필요하면 프로덕션 렌더링 값이 1.0 이상이 사용될 수 있습니다.
»>ptPointSize경로 추적기 캐쉬에 있는 점들 사이의 최고 거리를 정합니다. 0으로 설정되면, 장면의 사이즈에 기반해서 값이 자동으로 계산될 것입니다. 자동 값은 렌더링시에 프린트 될 것이며, 이는 점의 사이즈가 조정이 필요할 때 좋은 시작 값이 됩니다.
»>ptCacheDirectLight가능으로 설정되면, 경로 추적기는 광원으로부터 디렉트 라이팅을 캐쉬 할 것입니다. 더 적은 디렉트 라이트의 계산이 필요하므로, 성능을 향상 시킬 것입니다. 그리고, 근접된 결과를 주는데, 라이팅의 퀄리티에 영향을 줄 수 있습니다. 가령, 특정한 하이라이트로부터의 간접 라이트는 유실되게 됩니다.
»>ptCheckVisibility벽들을 통과하는 빛의 누출을 줄이기 위해서는 이 설정을 켜야 합니다. 점들이 보간 되기 위해 모였을 때, 몇몇 점들은 다른 쪽 기하/형상에 위치 할 수 있습니다. 그 결과로, 빛은 형상을 통과할 때 흐트러지게 됩니다. 이를 막기 위해서는, Beast가 보이지 않는 점들을 거절 할 수 있습니다. 주의: 이 설정을 사용할 때는 Final Gather를 위해 빛 누출 감소(light leakage reduction)를 꺼야 합니다.

역링크