유니티 프로파일러

Unity 프로파일러의 타임라인에서 각 컬러는 특정 작업 또는 작업 범주를 나타냅니다. 주어진 이미지에 기반하여, 컬러별로 주요 작업을 나열하면 다음과 같습니다:

 

초록색: 렌더링 (Rendering)

하늘색: 스크립트 (Scripts)

주황색: 물리 (Physics)

연한 청록색: 애니메이션 관련 작업 (Animation)

올리브색: 가비지(Garbage Collector)
노란색: VSync

붉은색: 글로벌 (Global Illumination)
보라색: UI 작업 (UI)

올리브색(?): 기타(Others)

 

전체적으로 해석하자면, 스크립트 > 기타 > 애니메이션 >= 랜더링 순으로 비중이 높은걸 알수 있습니다.

 

 

'업무일지' 카테고리의 다른 글

업무일지 <점검툴>  (0) 2023.11.16
업무일지 <Test용 이동>  (0) 2023.10.30
업무일지<Animation 기능 추가>  (0) 2023.10.25
업무일지 <alpha 버그>  (0) 2023.10.04
업무일지 <HDRP에 MainTex 관련 버그>  (0) 2023.09.27

유니티에서 베이크될때 이상하다는 이야기가 있어서 테스트 해봤습니다.

유니티는 면이 뒤집힌 경우 베이크가 제대로 되질 않네요.

저사양으로 개발할때는 면을 많이 아끼는 경우가 있는데, 베이크할때 주의가 필요할거 같습니다.

가능하면, 폐쇄된 형태의 오브젝트로 제작하는게 가장 좋은거 같습니다.

 

이런 골치아픈 문제를 손쉽게 해결하고자 한다면, 유니티 에셋에 있는 Bakery를 사용하는것도 괜찮을거 같다고 생각됩니다.(많은 사람들이 사용하는 어셋인 이유가 있더군요.)

'Unity > ETC' 카테고리의 다른 글

Prefab에 대해서 정리해봅시다.  (0) 2022.01.18
Unity LUT  (0) 2021.10.27
Asset Database version2?  (0) 2021.05.27
UTS2 Shader 모바일용과 일반의 차이  (0) 2021.05.25
플렛폼별 대표 이미지 압축율 테스트  (0) 2021.05.13

유니티 2020부터인가(?) Prefab을 만드려고 하면 다음과 같은 메세지가 나옵니다.

오리지날로 할지 종속(Variant)으로할지 선택하라는것인데..

종속(Variant)이라는 개념은 오리지날이 있고 오리지날이 바뀌면 종속이 같이 바뀌는 구조로 입니다.

원래 유니티는 오리지날뿐이 없었는데, 좋은 기능이라고 생각합니다.

 

문제는 이게 처음에 FBX를 넣어서 Prefab을 만드려고 하면, 어? 왜 처음부터 오리지날과 베리언트를 선택하라고 하지?

처음은 오리지날 아니야? 라고 생각이 듭니다.

 

그래서 몇가지 실험을 해보았습니다.

유니티 자체에서 박스를 만들고 프리팹으로 만들면 아무런 메세지 박스가 없이 Original이 됩니다.

 

하지만, fbx로 가져온 박스는 아래와 같이 프리팹선택을 해야합니다.

선택장애가 옵니다...


그래서... 테스트를 해보았습니다.

 

우선 이런 녀석을 fbx로 만들었습니다. 그리고 Original과 Variant 프리팹을 만들었습니다.

그리고 원본 fbx를 수정하여 구를 하나 추가하였습니다.

오리지날 프리팹은 구가 추가되지 않았고 종속(Variant)은 추가된것을 확인할수 있었습니다.

원본 FBX의 형태를 변형와 위치를 변형하여 보았습니다.

형태는 오리지날에 반영이 되었지만, 위치와 추가된 오브젝트는 오리지날에 반영이 안된것을 알수 있습니다.

테스트로 알수 있듯이, 처음에 Fbx로 Prefab을 만들때 특별한 사유가 없다면 Variant로 만드는것이 좋습니다.

그래야 종속이되서 원본이 변형되면 같이 변형이 가능합니다.

 

추가 테스트

종속에 종속에 종속...

 

'Unity > ETC' 카테고리의 다른 글

Baked Lightmaps 문제점  (0) 2022.12.12
Unity LUT  (0) 2021.10.27
Asset Database version2?  (0) 2021.05.27
UTS2 Shader 모바일용과 일반의 차이  (0) 2021.05.25
플렛폼별 대표 이미지 압축율 테스트  (0) 2021.05.13

(개인적으로 테스트하고 세팅한 값들이라 오류가 있을 수 있습니다.)

 

HDRP Project setting은 개인적으로 굉장하다고 생각됩니다.(더 많은 옵션이 있으면 좋겠다는...)

URP에서의 Project setting는 뭐랄까 굉장히 제약이 많고 할수 있는게 별로 없다는 느낌이지만, 

HDRP Project setting 정말 많은 부분을 직접 설정할수 있다는게 굉장히 매력적입니다.

 

Project Setting을 열어 초기 셋팅을 시작합니다.

 

HDRP는 기본적으로 Linear로 설정이 되어 있지만, 처음에 확인하는 것이 좋습니다.

이게 왜 중요한가는 화면에 보이는 방식과 Shader를 계산할때 수치적으로 정확하게 하기 위함이라고 생각하고 넘어가면 될 거 같습니다.

(감마와 리니어에 대한 장단점은 대마왕님 강의를 검색하셔서 보시는것을 추천합니다.)


그다음은 Graphics인데, 이게 개인적으로는 초기에는 Quality랑 좀 헛갈리는 부분이 있었습니다.

둘다 똑같이 HDRenderPipelineAsset이라는 놈을 사용합니다.

 

그냥 두시면됩니다. 그냥 기본적인 게임 Quality셋팅이라고 할수 있습니다.

 

DefaultHDRPAsset을 임의로 설정할수 있는데, 어차피 Quality에서 설정하기 때문에 이부분은 구지 건드릴 필요는 없다고 생각됩니다.(이렇게 말하면서, 본인은 medium HDRenderPipelineAsset을 여기에 바꿔놓았고..)

Quality에서 보면 이렇게 보이는것을 알수 있습니다.

 


그다음은 HDRP Default Settings로 넘어가서 대부분 그대로 두면되는데,

중요한 부분은 Light Layer names과  Volume Components를 설정하는 것입니다.

Light Layer name은 조명 레이어 설정할때 이름 변경하는 부분입니다.(기본으로 둬도 상관없는데, 은근히 헛갈리기 때문에 이름을 바꿔서 사용합니다. 레이어 이름을 어디서 변경하나 했더니...여기있었군요...)

 

Volume Components를 확인하면, 기본적으로 뭔가 많이 있습니다.

이부분은 Scene을 구성할 때 기본적으로 설정하는 포스트프로세싱입니다.

전체적으로 어떤 분위기를 잡기 위해서 설정하는 것인데, 스테이지마다 분위기가 다르고 설정해야 할 값이 다르다면

Scene에서 직접 구성하는 것 좋기 때문에 대부분 삭제하는 것 좋습니다.

전 개인적으로 Exposure를 제외하고 다 없애고 사용합니다. 어차피 Scene에서 Exposure(노출)를 따로 조정하기 때문에 이것도 의미가 크게 있진 않지만 통일된 기본셋을 하나는 넣어 두는 것이 좋다고 생각합니다.

(그외에 Shadows 처럼 크게 변경되지 않는 것들을 넣어두면 편리합니다.)

 

그리고, LookDev Volume이라는 것이 있는데, 이건 임시로 모델링에 포스트프로세싱을 볼 수 있게 해주는 별도의 툴인데,  게임 설정과는 아무런 상관이 없는 부분이라 무시하셔도 됩니다.(이게 뭔지 한참을 찾았다는...)

 


다음 제일 중요한 퀄리티 셋팅 부분입니다.

이부분을 어떻게 설정하느냐에 따라 고사양 컴퓨터와 저사양 컴퓨터에서 돌아가게 하는것을 결정하는 곳이기 때문입니다. 말그대로 퀄리티를 설정하는 부분인데, 각각 설정을 어떻게 하느냐에 따라서 포스트프로세싱이나 그림자의 퀄리티가 결정이 됩니다. 아래는 기본 HDRP 설정입니다.

근데, Quality 아래에 HDRP가 또 있습니다.

이게 뭐냐면 Quality에 있는 Very low, Medium, Ultra를 각각 컨트롤 하는 부분입니다.

일종에 세부 설정입니다.

근데, 이게 Inspector에서도 수정할수 있는 부분입니다.(편의상 이곳에 해놓은거 같습니다.)

이 퀄리티 파일은 Project에서 우클릭하여 아래처럼 생성할수 있습니다만, 아무래도 유니티에서 제공되는 기본을 가지고 변경하는것이 뭔가 맘이 편합니다.

 

중요한 Quilty 셋팅은 다음장으로...

'Unity > HDRP' 카테고리의 다른 글

Shader variant collections  (0) 2022.09.02
HDRP에서 Emssion 사용시 주의점  (0) 2022.06.24
HDRP와 URP의 빛의 차이  (0) 2022.02.10
URP, HDRP 라이트맵(shadowmask) 설정  (0) 2022.01.18
HDRP Quality 셋팅  (0) 2021.10.08

Unity Shaders con CG/HLSL y Shader Graph 강의를 대충듣고 작성된겁니다.

(원어가 스페인어이고 이를 번역한 영어를 또 해석한거라 오역이 있을수 있습니다.)

 

 

물체가 화면에 뿌려지는 과정은 위와 같은과정을 거친다.

 

unity 쉐이더는 CG 코드를 사용한다.

CG언어는 NVIDIA와 마이크로소프트의 협력하여 만든 언어이다.

그리고 이것은 HLSL가 비슷한 구문으로 사용된다.

 

GLSL- OpenGL Shading Language

HLSL- High Level Shader Language

HLSL과 CG는 동일한 언어이지만 다른 이름을 반영합니다.

 

셰이더가 CG 언어로 작동하는 이유 HLSL과 GLSL을 모두 컴파일 할 수 있기 때문입니다.

 

1. Shader의 이름을 정의합니다.

2. Shader 속성을 정의합니다.

3. Shader 시작과끝

4. 하나 이상의 pass를 설정합니다.

 

반투명과 투명픽셀의 블랜딩을 설정하여 투명단계를 설정합니다.

Shader의 모든 속성은 쉐이더랩 언어로 선언됩니다.

이 모든것은 CG언어가 GPU에서 실행됩니다.

 

Unity는 두가지를 선택할수 있는 언어 옵션을 제공합니다.

Surface shader는 빠르고 쉽게 접근이 가능하지만 갖혀진 틀에서 작업해야하며,

Vertex/Fragment Shader는 좀더 많은 범위에서 조작이 가능해집니다.

 

속성은 8가지로 작성될수 있습니다.

 

투명과 불투명을 설정합니다. (이외에 뭐라 설명하는데 이해를 못했네요.)

 

투명패스, 컬러패스, 그림자패스등 렌더 패스를 나타냅니다.

패스가 많을수록 드로우콜이 늘어나게 됩니다.

 

Fallback은 subshader가 실패할 경우 사용해야 하는 기본 셰이더 이름에 해당합니다.

(만든 셰이더가 제대로 작동하지 않는다면 다른 셰이더를 사용하라는 일종에 대비에 해당됩니다.)

 

구조체 사용변수

 

정점 셰이더는 3D 모델의 각 정점에서 실행되는 프로그램입니다.

객체의 정점 위치를 "클립공간" "투사공간"이라고 불리는 자표계로 변환할수 있습니다.

 

물체에 텍스쳐를 붙이고 싶다면 우리는 UV좌표를 갖을 필요가 있습니다.

Fragment Shader는 객체가 화면에 차지하는 각 픽셀에서 실행되는 프로그램입니다.

 

Fragment Shader는 최종적으로 화면에 뿌려지는 픽셀이라고 설명할수 있습니다.

 

그래서 우리는 원하는 결과를 화면에 물체를 뿌리기 위해서는  Vertex Shader와 Fragment Shader 둘다 필요합니다.

 

Unity에서 셰이더를 생성하기위한 표준 언어가 HLSL입니다.

Unity에는 모바일 장치에서 더 나은 작동을 허용하는 몇 가지 추가 데이터 유형이 위처럼 있습니다.

더 높은 정밀도로 데이터 유형으로 작업 할 때 GPU 계산이 높을수록 그러므로,모바일 장치가 더 뜨거워지고 배터리가 더 많이 소모됩니다.

Float는 고정밀 32 비트 데이터 유형입니다.
Half는 16 비트 중간 정밀도 데이터 유형입니다.
fixed는 낮은 정밀도의 11 비트 데이터 유형입니다.

 

벡터와 행열

 

텍스처의 데이터 유형의 예

 

3D 물체가  화면에 뿌려주는 과정

 

float4x4는 UNITY_MATRIX_MVP 행렬에 해당하는 세 개의 개별 행렬이 결합 된 형태입니다.

로컬, 월드, 뷰, 프로젝션 

 

Local space : 물체의 중심을 기준으로 정의됩니다.

POSITION 시맨틱은 꼭지점 값을 이야기 합니다.

float4 vertex : POSITION 의미는 "vertex"변수에 모델의 초기 정점 위치를 저장하여 셰이더에 할당합니다.

 

World space: 포인트의 위치는 그리드의 중심을 기준으로 정의됩니다.

 

View space: 공간에서 한 지점 사이의 거리 좌표에 해당 카메라 뷰의 포인트입니다. 카메라 시선이라고 생각하면됩니다.

 

 

Projection space: 클립스페이스이다.

카메라 렌즈의 중앙에있는 거리와 관련하여 클립 공간이라고도하는 투영 공간에서 좌표 변환 프로세스는 카메라 Frustum와 관련하여 수행됩니다.

Frustum: 근거리 클리핑 평면, 원거리 클리핑 평면 및 시야로 정의됩니다.

SV_POSITION 의미론은 픽셀의 위치에 해당합니다.

(유니티정의:두 클리핑 평면과 경계선에 의해 잘린 피라미드의 형상이 되며, 이것을 뷰 Frustum이라고 합니다.)

 

 

UnityObjectToClipPos ()는 오브젝트를 로드할 때 정점의 위치는 오브젝트 공간에 로드됩니다

물체를 로드하는 방식은 여러가지 이나, 가장 적절하고 간단한 방법은 포함 된 기능을 사용하는 것입니다.

'Unity > Code base Shader' 카테고리의 다른 글

인위적 유리 셰이더  (0) 2021.02.09
Z-Buffer, Render Queue, Tag, Blending  (0) 2021.01.01
Specular 다 광원지원  (0) 2020.12.21
SpecularShader  (0) 2020.12.19
diffuseShader  (0) 2020.12.15

GI Cache를 지우고 해봅니다.

이게 빌드 속도를 높이려고 만든것인데, 간혹 제대로 조명이 제대로 안나온다면 이걸 리셋해주면 해결이 됩니다.

라이트맵이 제대로 반영이 안되거나 할때도 한번씩 눌러줍니다.

그외에 빌드 옵션이 잘못된 경우도 있으니 잘 확인해야합니다.

'Unity > ETC' 카테고리의 다른 글

플렛폼별 대표 이미지 압축율 테스트  (0) 2021.05.13
Galaxy S21, S7, fire HD 10 스펙  (0) 2021.05.12
Post Process 실시간 값 변경  (0) 2020.12.22
Post process 간략 설명  (0) 2020.12.18
Terrain Bake시 주의할점  (0) 2020.12.16

메인 카메라에 포스트 프로세싱 레이어를 넣습니다.
Post process Volume을 넣고 profile로 new로 만들던가 기존에 만든것이 있다면 넣습니다.
포스트 프로세스를 사용하고 싶지 않는 오브젝트를 위한 카메라를 설정합니다.
원하는 오브젝트에 포스트 프로세스를 제외합니다.

참고: www.youtube.com/watch?v=AooFfmQ_Svo

 

옵션 설명

docs.unity3d.com/Packages/com.unity.postprocessing@2.3/manual/Ambient-Occlusion.html

 

Ambient Occlusion | Post Processing | 2.3.0

Ambient Occlusion The Ambient Occlusion post-processing effect darkens creases, holes, intersections and surfaces that are close to each other. For further information on the Ambient Occlusion effect, refer to the Ambient Occlusion documentation in the Uni

docs.unity3d.com

특정 물체에 포스트 프로세싱을 안하려면

- 포스트 프로세싱이 된 카메라 하단에 카메라를 하나 넣고 다음과 같이 설정합니다.

- 하지만 문제가 있습니다. 위 설정은 카메라 순서를 무시합니다.

- 이럴때는 아래와 같이 설정하면 됩니다.

 

'Unity > ETC' 카테고리의 다른 글

빌드후에 라이트문제가 발생했을때  (0) 2020.12.30
Post Process 실시간 값 변경  (0) 2020.12.22
Terrain Bake시 주의할점  (0) 2020.12.16
Reflection Probe의 반사..  (0) 2020.12.14
플렛폼별 Texutre 설정  (0) 2020.12.11

Unity의 기본셰이더를 보면 Mask texture를 넣는 부분이 있습니다.

Mask 기본은 연두색으로 이루어진 경우가 많은데 이유는 RGBA채널별로 각각 다른 텍스쳐를 넣어서 텍스쳐 한장으로 효율적인 텍스쳐관리를 위해서 제작됩니다.

일반적으로 메탈이나 AO는 흑백외에는 컬러를 사용하지 않기 때문에 텍스쳐 한장으로 만드는것이 여러가지 유리합니다.

 

R- metal관련 맵을 넣는 부분입니다.
G- AO관련 맵을 넣는 부분입니다.
B- 마스크맵입니다.(구멍뚫는 용도?)
A-smoothness맵을 넣는 부분입니다.(블랙이면 반응이 없어요.)

 

'Unity > ETC' 카테고리의 다른 글

Reflection Probe의 반사..  (0) 2020.12.14
플렛폼별 Texutre 설정  (0) 2020.12.11
볼때마다 잊어버리는 조명설정..  (0) 2020.11.18
유니티 빌드옵션 Compression Method  (0) 2020.11.11
Memory Profiler  (0) 2020.11.10

 

이놈에 기억력이란...

 

'Unity > ETC' 카테고리의 다른 글

플렛폼별 Texutre 설정  (0) 2020.12.11
Unity Mask  (0) 2020.12.11
유니티 빌드옵션 Compression Method  (0) 2020.11.11
Memory Profiler  (0) 2020.11.10
코딩을 도와주는 비쥬얼스크립트  (0) 2020.11.10

Vertex Color(메쉬의 버텍스 컬러를 이용한 텍스쳐 겹치기 방법:배경 바닥에서 주로 사용된다.)

View Direction - 카메라가 보는 방향

Gradient - 컬러를 그라디언트로(fixed로 하면 끊어진 컬러가 된다.)

Sample gradient - 시간을 넣을수 있다.(이외에 다른것도..)

Ambient - 하늘, 적도, 바닥 컬러를 정해준다. 라이트맵(환경광)의 컬러를 가져오는걸 알수있다.

Baked GI - 베이킹된 맵을 텍스쳐로 사용할수있다.(diffuse로 사용할수 있다는 뜻인데, 용도는 모르겠음.)

 

Refraction Probe - 반사 효과를 넣을수 있다.

'Unity > Shader Graph & Amplify' 카테고리의 다른 글

툰 쉐이더 Amplify shader set  (0) 2020.11.02
Shader graph-input03  (0) 2020.07.12
Shader graph -input01  (0) 2020.06.11
Shader graph -channel01  (0) 2020.06.10
Shader graph -Artistic03  (0) 2020.06.10