PVRTC : IOS에서 주로 사용됩니다.(PowerVR Texture Compression)

 

유니티에서 기본 압축 포멧으로 PVRTC1이 사용됩니다.

정밀도로 2pp(2비트) 와 4pp(4비트) 두개의 타입으로 존재합니다.

기본적으로 아무것도 안하면, 유니티에서는 RGB PVRTC 4 bits로 저장됩니다.

 

초기버전은 PVRTC1 와 최근(?) PVRTC2가 존재합니다.

PVRTC2가 더 업그레이드된 버전이겠지요?

하지만, 유니티는 PVRTC1만 지원합니다.

 

알파테스쳐가 있든 없든 압축이 됩니다.

텍스쳐를 변조처리할때 선형보간을 수행하여 픽셀 블럭화 현상이 완화되지만, 대신 번짐 현상이 발생하여

만화풍의 스프라이트나 아이콘은 번짐현상이 발생합니다.

이럴때는 해상도를 512에서 1024로 바꾼는 방법을 선택하는것이 현명할것입니다.

아니면 압축을 안하는 방법을 써야겠습니다.

 

 

ETC: 안드로이드에서 주로 사용됩니다.(Ericsson Texture Compression)

 

기본적으로 아무것도 안하면, 유니티에서는 RGB CompressedETC 4 bits로 저장됩니다.

 

ETC1 과 업그레이드 버전 ETC2가 존재합니다.

ETC2는 OpenGL ES 3.0이상에서만 지원됩니다.

갤럭시 S3이하는 OpenGL ES 2.0으로 구동됩니다.

하지만, 그렇다고 OpenGL ES 2.0에서 ETC2가 구동이 안되는것은 아니고, 메모리를 더 잡아먹고 느려질뿐입니다.

프로젝트에 따라 선택하는게 현명한 선택일겁니다.

아주아주아주아주 범용은 ETC1, 구형폰따위는 하면 ETC2로..

ETC1은 알파 채널을 지원하지 않습니다만, 4비트로 저장하면 지원됩니다.(뭔개소리인가 싶지만, 알아서 텍스쳐를 하나 더 생성한다고 생각하면 되고, 결국 메모리를 더 잡지만 안되는건 아님이라고 생각하면 될듯합니다?)

 

ASTC: (Adaptive Scalabe Texture Compression)

 

ETC아 PVRTC와 다르게 더 많은 블록 크기를 사용합니다.

(12x12 block까지 사용되고, ETC와 PVRTC 4x4 block까지)

 

OpenGL ES 3.2이상이거나 OpenGL ES 3.1+AEP(Android Extesion Pack)에서만 지원됩니다.

그래서 고사양? 폰에서 추천한다고 합니다.

 

 

개인적으로는 가장 좋은 방법은 빌드할때 가장 높은것을 선택해보고, 최저사양으로 테스트하면서, 점차 낮춰가는게 좋은 방법이 아닐까 싶습니다.

잘모르겠으면...기본으로 합시다.^^;

 

 

출처: 유니티 그래픽스 최적화 스타트업

 

 

 

 

 

 

 

 

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

Terrain Bake시 주의할점  (0) 2020.12.16
Reflection Probe의 반사..  (0) 2020.12.14
Unity Mask  (0) 2020.12.11
볼때마다 잊어버리는 조명설정..  (0) 2020.11.18
유니티 빌드옵션 Compression Method  (0) 2020.11.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

컬렉션

ArrayList

ArrayList arrayL = new ArrayList();
void Start(){
	arrayL.Add(1); //추가하기
	arrayL.Add(3);
    	arrayL.Add("list");
    	arrayL.Add("fun");
    
    	arrayL.Remove(list); //list를 지움.
        arrayL.RemoveAt(2); // 3번째 add된것을 지움.
        arrayL.RemoveRange(0,2) // 0-2까지 범위를 지움.
        arrayL[0] = "tt";//0번 인덱스를 바꾸는것.
    
    print(arrayLsit.Count);
    
    for(int i =0; 1 <arrayL.Count; i++)
    {
    	print(arrayL[i];
    }
    
}

List =  정수형, 문자형등 형식을 정해서 넣어서 사용하므로 ArrayList보다 성능이 더 좋다고 할수 있다.

 

HashTable =  특정키값을 정해서 리스트를 만드는 기능이다. [만수(특정값 , 10000)]

Dictionary =  HashTable과 유사하고 List처럼 정해진 형식을 사용한다.

 

Queue = 순서대로 값을 넣고 순서대로 값을 빼내서 없앨때 사용된다.

    Queue<int> qqu = new Queue<int>();

    void Start()
    {
        qqu.Enqueue(1);
        qqu.Enqueue(3);
        qqu.Enqueue(5);

        if (qqu.Count != 0)// 아무것도 없을때 에러가 나지 않게 if를 넣어준다.
            print(qqu.Dequeue());
        if (qqu.Count != 0)
            print(qqu.Dequeue());
        if (qqu.Count != 0) 
            print(qqu.Dequeue());
    }

 

Stack= 순서대로 값을 넣고 반대순서대로 값을 없앨때 사용된다.(젠가는 위로 쌓아서 위에서 부터 제거한다.)

    Stack<int> SST = new Stack<int>();

    void Start()
    {
        SST.Push(1);
        SST.Push(7);
        SST.Push(3);


        print(SST.Pop());
        print(SST.Pop());
        print(SST.Pop());

    }

'Unity > C#' 카테고리의 다른 글

물체를 회전하고 상하 반복움직임.  (0) 2020.12.11
텍스쳐 애니메이션 타일셋  (0) 2020.12.11
텍스쳐를 자동으로 설정해봅시다.  (0) 2020.12.06
유니티의 Object 이해  (0) 2020.12.06
Scene 재시작  (0) 2020.11.21

이 개념을 이해하는데 많은 시간이 소요되었네요.

 

우선 개념을 잡아보자면, 벡터는 방향과 길이를 말하는것이고, 스칼라는 양을 나타냅니다.

 

A가 0cm에서 5cm로 간다고 생각하면 이것은 벡터입니다.

B가 4cm에서 9cm로 간다면 이것도 벡터입니다.

그리고 A와 B는 둘다 같은 벡터입니다.

A, B 둘다 같은 벡터입니다.

벡터는 사실 시작점이 어디인지는 중요하지 않습니다. 거리와 방향만 중요할 뿐입니다.

하지만 C가 0cm에서 -5cm로 간다면 이건 A와 B랑은 다릅니다. 이유는 C의 방향은 반대이기 때문입니다.

A = B C

어찌되었건 A,B,C 모두 벡터입니다.

서로 다른 벡터입니다.

 

스칼라는 양인데,

A의 크기가 5cm라면 A=5cm 입니다.

A도 시작위치는 중요하지 않습니다. A의 방향도 중요하지 않습니다. 다만, A=5cm 입니다.

그래서 스칼라는 마이너스라는 개념이 없습니다. 오로지 크기 또는 거리 또는 양 만을 나타내기 때문입니다.

 

그래서 vector는 +, - 가 존재하고, scalar는 +만 존재합니다.

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

SpecularShader  (0) 2020.12.19
diffuseShader  (0) 2020.12.15
좌표공간 변환  (0) 2020.12.12
내적(dot)  (0) 2020.12.12
UnlitShader  (0) 2020.12.11
using UnityEngine;
using UnityEditor;



public class TexturePostProcessor : AssetPostprocessor

{

	void OnPostprocessTexture(Texture2D texture)

	{

		TextureImporter importer = assetImporter as TextureImporter;

		importer.textureType = TextureImporterType.Default;

		importer.anisoLevel = 1;

		importer.filterMode = FilterMode.Bilinear;

		importer.mipmapEnabled = false; // 밉맵설정

		importer.maxTextureSize = 1024; // 텍스쳐 사이즈 설정
		
		var textureImporter = assetImporter as TextureImporter;
		textureImporter.SetPlatformTextureSettings(new TextureImporterPlatformSettings
		{
			overridden = true,//탭킨다.
			name = "Standalone",//PC설정
			maxTextureSize=1024,//사이즈설정
			format = TextureImporterFormat.DXT1Crunched //포멧설정
        });


	}

	}

}

참고: 두나미스 테크니컬 아트 & 애니메이터 (Tech Art / Anim)

도움주신분들: 핑속님,성국님.

 

 

https://docs.unity3d.com/ScriptReference/TextureFormat.html

 

Unity - Scripting API: TextureFormat

Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close

docs.unity3d.com

 

'Unity > C#' 카테고리의 다른 글

텍스쳐 애니메이션 타일셋  (0) 2020.12.11
C# 기초 기억창고2  (0) 2020.12.11
유니티의 Object 이해  (0) 2020.12.06
Scene 재시작  (0) 2020.11.21
캐릭터 랜덤 모션  (0) 2020.11.02

- 스크립트 안에서 gameObject는 '나자신=해당Object 자신'이고 GameObject는 '다른 Object' 이다?

- 유니티에서 대문자로 시작되는 것들은 Class로 생각하면...

- 같은이름인데 소문자의 경우 클래스의 인스턴스라고 생각하면..

'Unity > C#' 카테고리의 다른 글

C# 기초 기억창고2  (0) 2020.12.11
텍스쳐를 자동으로 설정해봅시다.  (0) 2020.12.06
Scene 재시작  (0) 2020.11.21
캐릭터 랜덤 모션  (0) 2020.11.02
EditorWindow  (0) 2020.10.30
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class restart : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKey(KeyCode.Space))
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
        }
    }
}

'Unity > C#' 카테고리의 다른 글

텍스쳐를 자동으로 설정해봅시다.  (0) 2020.12.06
유니티의 Object 이해  (0) 2020.12.06
캐릭터 랜덤 모션  (0) 2020.11.02
EditorWindow  (0) 2020.10.30
간단한 애니메이션 스크립트  (0) 2020.09.08

앞뒤로 물체가 반복 이동하게 된다.
좀더 쉬운 방법

 

깃발처럼 물결이 친다.
유사하지만 다른방법

learn.unity.com/tutorial/visual-effects-shadergraph-2019-3?uv=2019.1&projectId=5d0a4b59edbc2a001fe52445#5efcff47edbc2a004d2e7c6b

 

Visual Effects: Shadergraph (+2019.3) - Recorded Learn Live Session - Unity Learn

Watch the recording of the Learn Live virtual session where a Unity Certified Instructor led learners through a series of mini-challenges to make a flag wave utilizing the Time, Sine and UV nodes to give the flag a wave effect. Throughout the session you w

learn.unity.com

 

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

갈라짐 연출하기  (0) 2021.03.18
Shader graph 팁  (0) 2020.12.19
Amplify Shader 주요 기능  (0) 2020.11.04
툰 쉐이더 Amplify shader set  (0) 2020.11.02
Shader graph-input03  (0) 2020.07.12

 

이놈에 기억력이란...

 

'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

옵션선택은 Default / LZ4 / LZ4HC 이렇게 3가지가 존재한다.

2019.2까지는 Default로 선택되어있었는데,

 

Default(ZIP) : 기본값

LZ4 : 빌드 속도 빠름. 개발빌드 때 적합함.

LZ4HC : 빌드는 느린데, 로딩이 빨라짐. 최종빌드에 적합함.

 

출처: mentum.tistory.com/366

 

 

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

Unity Mask  (0) 2020.12.11
볼때마다 잊어버리는 조명설정..  (0) 2020.11.18
Memory Profiler  (0) 2020.11.10
코딩을 도와주는 비쥬얼스크립트  (0) 2020.11.10
복사 오브젝트와 Attach 오브젝트의 포퍼먼스 차이  (0) 2020.09.29