Anti-aliasing / Quality setting/ Rendering Path etc.

https://namu.wiki/w/%EC%95%88%ED%8B%B0%EC%97%90%EC%9D%BC%EB%A6%AC%EC%96%B4%EC%8B%B1

1. Anti-aliasing :  aliasing is pixel bumping situation and anti-aliasing resolve these issue.

Aliasing 발생을 제거하기 위해서는 재생하는 기기 측의 샘플링 주파수가 원본의 샘플링 주파수의 2배 이상이어야 한다고 하나 우리에게 문제가 되는 벡터그래픽 및 3D그래픽에서 원본-즉 이상적 현실/개념 의 해상도는 무한대로 AA기술만으로는 이론상 해결이 안된다.(이상적인 개념으로 존재하는 직선, 원 또는 현실의 물체가 가지는 해상도는 무한대이기에 이를 모니터/TV화면의 제한된 해상도로 출력하는 순간 Aliasing이 일어난다. 무한한 해상도를 가지는 벡터그래픽포맷으로 출력할때는 Aliasing이 일어나지 않지만 다시 제한된 해상도를가지는 디스플레이기기나 비트멥포맷으로 출력하면 결국 Aliasing이 일어난다.)

3D 그래픽에서 나타나는 계단 현상 제거가 대표적이며 현재는 '서브픽셀문제' 제거로 포커스가 옮겨가고 있다.[4] 3D게임에서 필수적으로 쓰이고 있으며 콘솔, PC게임에서 유용하게 사용되고 있고, 성능한계상 제한적이지만 휴대용게임기, 모바일영역에서도 점차 영역이 확대되고 있다.

아래 그림은 5x5 비트맵 그래픽-붉은색 이 5x6 비트맵-파란색으로 업스케일링시 중앙부분에서 Aliasing(붉은색 직선이 파란색으로 비틀리고 있다)이 일어나는경우를 보여주고 있다.

FSAA -  Full-scene anti-aliasing / SSAA - Super sampling anti-aliasing
1920x1080 화면을 x4 SSAA를 준다면 3840x2160 해상도로 돌리는 부담을 기기에 주게 된다. 계산량과 메모리 사용량에서 실로 무식하기 짝이없다.

뛰어난 화질을 보여주지만 그에 걸맞는 성능과 메모리가 요구된다. 높은배수에서는 비등방성필터링과 같은 텍스쳐 필터링 효과까지 겸한다. 이는 근원적으로 원본의 정보가 증가하는 것이기 때문에 1/Root(SSAA 배수) 만큼의 거리에 있는것과 마찬가지가 되어버려서 배수가 증가할수록 확연한 체감변화를 가진다. 이러한 필터링 효과가 지나치는것을 막기 위하여 최선의 화질을 위하여는 SSAA사용시 추가적인 LOD의 조절이 필요하게 된다.

** using SSAA requires LOD


Down sampling : using SSAA make it huge and down-sampling it in to resolution (Commonly use)

현재 컴퓨터 게임에서 가장 일반적이고 유일하게 진정한 SSAA의 구현방법.
샘플링 배수만큼 해상도를 확대 하여 화면을 만들어낸후 (x4 라면 총 4배, 가로2배/세로2배 해상도로) 만들어진 화면을 출력 해상도에 맞춰서 Down-Sampling한다(해상도를 줄여서 색을 섞는다). 이는 일정한 간격의 격자 모양으로 샘플링 하는것과 같은 원리가 되기때문에 OGSSAA 와 혼용하여 부르기도 한다.

화면을 45도 정도 회전시켜서 Down-Sampling SSAA를 준후 이를 다시 45도 회전시켜 원래대로 돌리는 방식으로 마치 Rotate-Sampling과 같은 효과를 주자는 퀄리티 주의자들도 있으나, 일단 품질저하를 최소화하는 회전의 연산량은 제외하더라도 화면을 45도 돌렸을때 들어가는 화면의 픽셀수는 2배이다. 지금도 연산량과 소요 메모리가 터무니 없이 많아서 아무도 안쓰는 SSAA에서 저 방법으로 x4의 효과를 위해서는 지금의 x8 수준의 연산량과 메모리가 들어간다. 덕분에 아무도 그런거 안만들어주고 있다.

SGSSAA/OGSSAA
Sparse-Grid Supersampling Anti-Aliasing/ Ordered-Grid Supersampling Anti-Aliasing


Ordered Grid란 모눈과 같이 일정한 간격을 가지는 격자를 말하며 Sparse Grid란 아래와 같이 외곽으로 갈수록 격자의 간격이 좁아지는것을 말한다.
파일:attachment/안티에일리어싱/sg.jpg

x4 Down-Sampling SSAA 는 4배의 화면을 만들어서 하나로 줄이고
x4 SGSSAA / OGSSAA 는 4개의 화면을 만들어서 하나로 합친다.

Texture Filtering
maked texture doesn't require anti-aliasing so texture filtering can solve these issues but these days
completed texture also use lighting or graphic effects so it's no longer solution for aliasing.

Texture와 같이 이미 정해진 비트맵 그래픽을 단순히 거리를 바꾸고 형태를 비틀기만 할 경우 이때 일어나는 Aliasing 해결을 위하여 샘플링 AA를 사용하는것은 비 효율적이다. 이에 텍스쳐에 한하여 일어나는 Aliasing을 대응하는 기술이 Texture Filtering 이다.

하지만 이미 완성된 텍스쳐 그래픽 위에 추가적으로 효과를 입히는 기술들이 생겨나면서 Texture Filtering 만으로는 텍스쳐 내부의 Aliasing에 대하여 충분한 대응이 불가능해졌다

MSAA Multi Sampling Anti-Alasing
폴리곤 외각선이 지나가는 곳만 SamplingAA효과를 준다
this can ease the memory usages of SSAA
Coverage Sample- detect the outline of polygon pass by and make color sample and subtract memories.

파일:attachment/안티에일리어싱/2.jpg
사물로부터 정사각형 모양의 네 방향으로부터 샘플을 채취하는 기본적인 방식으로
Voodoo, GeForceFX가 대표적으로 이 방법을 사용했다.

또한 그래픽이 완성된 후 후처리가 이루어지는 방식 즉 HDR이나 디퍼드 렌더링의 경우 MSAA가 걸린이후 후처리가 이루어지게 되고 이 경우 완성된 AA이후 이루어지는 후처리는 AA효과를 크게 해치게 되어 DX9에서는 HDR/디퍼드 렌더링과의 상성이 매우 안좋다. 구현은 가능하지만 실질적으로 성능요구가 지나치게 올라가는 경우가 많다. DX10 이후에서는 셰이더 자체를 손볼수 있도록 구조가 변경되면서 MSAA의 Color Sample을 추출하여 섞는 과정을 후처리 이후로 미루도록 만들수 있기때문에 성능문제 없이 해결할수 있다.

이후는 나중에 또


https://docs.unity3d.com/kr/current/Manual/class-QualitySettings.html

Rendering

프로퍼티:기능:
Pixel Light Count포워드 렌더링 사용 시 픽셀 광원의 최대 수입니다.
Texture Quality텍스처를 최대 해상도로 표시할지 아니면 이보다 낮은 해상도로(해상도가 낮으면 처리할 오버헤드가 적음) 표시할지 선택할 수 있습니다. 해상도가 낮을수록 처리하는 데 사용되는 리소스가 적습니다. 옵션은 Full Res, Half Res, Quarter Res, Eighth Res입니다.
Anisotropic Textures비등방성 텍스처 사용 여부와 방법을 설정할 수 있습니다 옵션은__Disabled, Per Texture, Forced On(즉 항상 활성화됨)입니다. | |AntiAliasing|사용할 안티앨리어싱 레벨을 설정합니다. 옵션은 2x, 4x8x 멀티 샘플링입니다.| |Soft Particles|소프트 블렌딩을 파티클에 사용할 것인지 설정합니다.| |Realtime Reflection Probes__게임플레이 중에 반사 프로브 업데이트 여부를 설정합니다



Shadow

1. Shadow Projection // Close fit : high quality, disable // Stable fit : lower quality, stable

2. Shadow Cascades by choesing 0, 2, 4 make shadow quality high or low. high cascade make better quality but lower performance

3. Shadow distance : shadow visible distance , further shadow will not be shown.

4. Shadow mask Mode : using mixed light

 Distance ShadowmaskUnity uses real-time shadows up to the Shadow Distance, and baked shadows beyond it.
Shadowmaskhadowmask: Static GameObjects that cast shadows always cast baked shadows.
    
5. Shadow Near Plane Offset 섀도우 팬케이크 현상으로 인해 큰 삼각형이 왜곡되는 것을 해결하기 위해 평면 부근의 섀도우를 오프셋합니다.


Other
Blend Weights애니메이션 중에 주어진 버텍스에 영향을 줄 수 있는 뼈대의 수 입니다. 사용 가능한 옵션은 뼈대 1개, 2개 또는 4개입니다.
VSync Count렌더링을 디스플레이 디바이스의 재생률과 동기화하여 “테어링” 결함을 방지할 수 있습니다(아래 참조). 모든 수직 블랭크(VBlank)와 동기화하거나 하나 거른 수직 블랭크와 동기화하거나 전혀 동기화하지 않는 옵션 중에서 선택할 수 있습니다.
LOD BiasLOD 레벨은 오브젝트가 화면에 표시되는 크기에 따라 선택됩니다. 크기가 두 LOD 레벨 사이에 있는 경우, 사용 가능한 두 모델 중에서 더 상세하거나 더 상세하지 않은 모델에 더 치우치도록 설정할 수 있습니다. 값은 0에서 +무한까지의 소수로 설정할 수 있습니다. 0과 1 사이로 설정하면 더 상세하지 않은 쪽으로 치우칩니다. 1보다 큰 값으로 설정하면 더 상세한 쪽으로 치우칩니다. 예를 들어 LOD 바이어스를 2로 설정하고 50% 거리에서 바뀌도록 설정하면 실제로는 LOD가 25%에서 바뀝니다.
Maximum LOD Level게임에서 사용할 최고 LOD입니다. 자세한 내용은 아래 참고 사항을 참조하십시오.
Particle Raycast Budget파티클 시스템 충돌 근사에 사용하는 (품질이 Medium 또는 Low__인) 레이캐스트의 최대 수입니다. Particle System Collision Module을 참조하십시오.| |Async Upload Time Slice|버퍼 텍스처를 GPU에 업로드하는 데 소요되는 CPU 시간입니다. 단위는 프레임당 밀리초입니다. 비동기 텍스처 업로드를 참조하십시오.| |Async Upload Buffer Size__비동기 업로드 버퍼의 크기입니다. 단위는 MB입니다. 비동기 텍스처 업로드를 참조하십시오.

MaximumLOD level

LOD가 MaximumLOD 레벨보다 낮은 모델은 사용되지 않고 빌드에서 제외됩니다. 그러면 스토리지 및 메모리 용량이 절약됩니다. Unity는 타겟 플랫폼에 대한 모든 품질 설정과 연결된 모든 MaximumLOD 값 중에서 가장 작은 LOD 값을 사용합니다. LOD 레벨이 포함된 경우 해당 LODGroup의 모델이 빌드에 포함되고, 사용되는 품질 설정에 관계없는 해당 LODGroup은 항상 런타임 시점에 로드됩니다. 예를 들어 LOD 레벨 0이 사용된 품질 설정이 있는 경우 모든 LOD 레벨이 빌드에 포함되고 모든 레퍼런스된 모델은 런타임 시점에 로드됩니다.

Tearing

디스플레이 디바이스의 영상은 지속적으로 업데이트되지 않고 Unity 프레임 업데이트 방식과 유사하게 정기적인 간격으로 업데이트됩니다. 하지만 Unity 업데이트는 디스플레이 업데이트와 동기화되지 않을 수 있으므로 디스플레이가 아직 이전 프레임을 렌더링하는 동안 Unity가 새 프레임을 제공할 수 있습니다. 그러면 화면에서 프레임이 변경되는 포지션에 “테어링”이라는 시각적 결함이 발생합니다.




https://docs.unity3d.com/kr/current/Manual/RenderingPaths.html

Rendering Path 렌더링 패스

Unity는 여러 가지 렌더링 경로를 지원합니다. 게임 콘텐츠와 타겟 플랫폼/하드웨어에 따라 사용할 경로를 선택해야 합니다. 렌더링 경로마다 주로 광원과 섀도우에 영향을 미치는 성능의 특징이 다릅니다. 기술적인 세부 정보는 렌더 파이프라인을 참조하십시오.
프로젝트에서 사용하는 렌더링 경로는 그래픽스 설정에서 선택합니다. 각 카메라에 대해 렌더링 경로를 오버라이드할 수도 있습니다.
선택된 렌더링 경로를 그래픽 카드로 처리하지 못하는 경우 Unity에서는 정확도가 더 낮은 렌더링 경로가 자동으로 사용됩니다. 예를 들어, GPU로 디퍼드 셰이딩을 처리하지 못하는 경우 포워드 렌더링이 사용됩니다.

디퍼드 셰이딩

디퍼드 셰이딩은 조명 및 섀도우 정확도가 가장 높은 렌더링 경로로, 실시간 광원이 많은 경우에 가장 적합합니다. 이 경로를 사용하려면 일정 수준 이상의 하드웨어 지원이 필요합니다.
자세한 내용은 디퍼드 셰이딩 페이지를 참조하십시오.

포워드 렌더링

포워드 렌더링은 일반적인 렌더링 경로로, 일반적인 Unity 그래픽스 기능(노멀 맵, 픽셀당 광원, 섀도우 등)을 모두 지원합니다. 하지만 디폴트 설정에서는 소수의 가장 밝은 광원만 픽셀당 조명 모드에서 렌더링됩니다. 나머지 광원은 오브젝트 버텍스에서 계산되거나 오브젝트별로 계산됩니다.
자세한 내용은 포워드 렌더링 페이지를 참조하십시오.

레거시 디퍼드

레거시 디퍼드(광원 프리패스)는 디퍼드 셰이딩과 유사하지만 장단점이 다른 기법을 사용할 뿐입니다. 이 경로에서는 Unity 5 물리 기반 스탠다드 셰이더가 지원되지 않습니다.
자세한 내용은 디퍼드 라이팅 페이지를 참조하십시오.

레거시 버텍스 릿

레거시 버텍스 릿은 조명 정확도가 가장 낮은 렌더링 경로로, 실시간 섀도우를 지원하지 않습니다. 이 경로는 포워드 렌더링 경로의 하위 집합입니다.
자세한 내용은 버텍스 릿 페이지를 참조하십시오.

참고: 디퍼드 렌더링은 직교 투사 사용 시 지원되지 않습니다. 카메라의 투사 모드가 직교로 설정된 경우 해당 값이 오버라이드되고 카메라가 항상 포워드 렌더링을 사용합니다.

렌더링 경로 비교

디퍼드포워드레거시 디퍼드버텍스 릿
기능
픽셀당 조명(노멀 맵, 광원 쿠키)지원지원지원-
실시간 섀도우지원제약 있음지원-
반사 프로브지원지원--
뎁스 및 노멀 버퍼지원추가 렌더 패스지원-
소프트 파티클지원-지원-
반투명 오브젝트-지원-지원
안티앨리어싱-지원-지원
광원 컬링 마스크제한됨지원제한됨지원
조명 충실도모든 픽셀당일부 픽셀당모든 픽셀당모든 버텍스당
성능
픽셀당 광원 비용비추는 픽셀 수픽셀 수 * 비추는 오브젝트 수비추는 픽셀 수-
일반적인 오브젝트 렌더링 횟수1픽셀당 광원 수21
단순 씬 오버헤드높음None중간None
플랫폼 지원
PC(Windows/Mac)Shader Model 3.0+ & MRT모두Shader Model 3.0+모두
모바일(iOS/Android)OpenGL ES 3.0 및 MRT, Metal(A8 이상 SoC 탑재 기기)모두OpenGL ES 2.0모두
콘솔XB1, PS4모두XB1, PS4, 360-

https://docs.unity3d.com/kr/current/Manual/LightMode-Mixed.html

Mixed shadow

댓글

이 블로그의 인기 게시물

About AActor!!! "UObject" has no member "BeginPlay"

UNREAL Android build information

Shader informations nice blog ~ ~