-------------
■ 색상과 텍스쳐의 표현
1) 2^1bit = 2색
색상의 정보는 없다. 켜지고, 꺼지고의 2단계.
2) 2^2bit = 4색 Grey
4단계로 켜지고 꺼진다.
3) 2^4bit = 16색 Grey Color / Indexed Color
팔레트를 이용한 컬러가 가능!! //단, 픽셀의 색상정보는 없음!!
*팔레트를 이용한것을 Indexed Color 라고부른다.
*디더링 (Dithering) : 병치혼합
4) 2^8bit = 256색 indexed Color
0~255// 256가지 색을 이용한. 8bit 팔레트.
여전히 디더링은 많이 사용한다.
*스타크래프트에서 8bit 팔레트에 애니메이션기능을 활용하였다.
5) 2^16bit = 65536색
모니터 화소에 R,G,B섹상의 픽셀형광등을 켜고 끄는것으로 팔레트를 대체하기 시작했다.
*R5, G6, B5 = RGB 16bit
32색,64색,32색 = 총 65536색 "5,6,5" 라고 많이 불림.
*사람은 녹색에 조금더 민감하게 반응하기에, 녹색에 색이 조금더 많다.
*1bit보다 한픽셀이 16배로 무거워졌으나, 3만배 이상의 색이 표현가능하다.
*RGBA를 4:4:4:4로 나눠서 사용할수도 있다.
이때, 한색당 16가지 색밖에 사용하지 못하므로, 퀄리티가 급격히 떨어진다. (4bit)
6) 2^24bit = 16777216색 (약 1600만)
RGB를 8:8:8로 나눠서 사용. 한 색당 256색을 활용가능함.
현재 가장 많이사용하는 TGA(24bit,no alpha)가 여기에 해당함.
*아무리 숫자가 많아도, 결국 채널은 Greyscale에 해당한다. 포토샵의 채널을 보면 알기쉽다.
각 채널은 셀로판지에 해당하고, GreyColor가 256색으로 켜지는 것이다.
*각 채널을 좌우로 이동시켜서 "색수차 현상"을 만들수도 있다.
7) 2^32bit = 4294967296색 (약 42억)
RGBA에 각각 8bit씩 나눌수 있다.
알파채널이 포함된 TGA(32bit)가 여기에 해당함.
*알파(Alpha)란? __ "plus alpha" 무언가에 추가한다는 의미. 덤이라는 의미의 알파이다.
8) 2^64bit / 2^128bit는 실존하는가?
채널당 16bit/32bit를 지원하는 초고화질이다.
*Raw파일이나 HDR에 사용되고 있다.
*인쇄용 원본/ Displacement map/ Light map등 고급정보가 필요한곳에 사용되고 있다.
★엔진에서도 카메라의 HDR기능을 켜면 Bloom이 생기거나 Colorgrading(색차계단?)이 없어짐.
■ Float (실수)
프로그래머의 계산 단위로, 32bit = 4byte에 해당.
Float:부동소수점 => 소수점아래 6번째 자리까지 유효하다.
*Shader에서는 정수도 float로 계산된다.
*float는 데이터를 담는 상자라고 생각하면 편하다. 32bit짜리 상자안에 데이터를 집어넣는것이다.
RGB는 Float3에 해당하는데, 각 채널당 8bit짜리를 각각 Float(32bit)상자에 넣는다고 이해하면된다. (데이터낭비.)
Unity Shader에서 사용될 단위로는
1. Float
2. Half = float/2 (16bit)
3. fixed = float/4 (8bit)
..로 박스크기를 줄인것이다.
내용물이 바뀌는 것은 아니므로, 최적화 할 때 사용된다.
◆이처럼 텍스쳐 포멧당, 색의 숫자(단위)가 다르고, 그것을 그래픽디자이너와 소통하기에는
시대의 발전사항에 맞춰 어마어마한 숫자가 나오고있다. 그것을 0~1/ 0~100%로 정규화(Normalize)하여 표현하였다.
퍼센트로 분할하면, 몇bit의 색도 같은 표현이 가능하다.
즉, Red = (1,0,0,1) / Green = (0,1,0,1) / Blue = (0,0,1,1).... 이런식으로 표현이 가능.
이렇게 모든 색상는 Float4에 해당한다. (단, Float3로 치환은 가능하다.)
■ 게임전용 텍스쳐포멧
● DDS : 유니티에서 사용되는 파일포멧이 아님..
DirectX의 Texture Format과 일대일 대응하는 포멧이다.
DirectX를 지웒나느 모든 비디오카드에 굉장히 빠르게 사용가능한 File Format이다.
단, 2의 승수로만 가능. (Power of Two)
DxT1 RGB (No Alpha) : R5,G6,B5
DxT5 RGBA (Interpolated) : R5,G6,B5,A8 __알파가 8bit인게 특징이다.
● IOS texture format..
1) RGB Compressed PVRTC 4bits
2) RGBA Compressed PVRTC 4bits __말그대로 알파가 추가됨.
● Android texture format.. => 기종마다 다르고, 그래픽 칩셋도 다 다름.. (주의)
1) RGB Compressed ETC1 4bits : 가장 강력한 공용포멧이다. 단, 알파가 없다는것이 최대의 단점.
**Alpha를 만들기 위해서 ETC1을 한장 더 사용하고, R채널을 Alpha에 대입하는 쉐이더를 짜서 바꿔줘야한다.
매우 번거롭지만, 비용이 제일 싸고, 효과가 강력하다.
2) RGBA 16bit : Alpha가 지원되는 공용포멧이지만.. 무압축이므로 용량이 너무크다. 위 방법을 추천한다.
3) RGB Compressed ETC2 4bits : 드디어 알파가 가능하다. 다만 OpenGL ES 3.0이상에서 지원된다.
이하 버전에서도 돌아가긴하지만, RGBA 32bit로 자동변환되므로 비용이 너무 크고 무거워진다.
** 겔럭시노트3부터 지원된다. 겔럭시S3는 지원불가능..
■ Shader
DirectX 8.0 이후부터 쉐이더가 도입되었다.
1) HLSL (High Level Shader Language)
2) GLSL (OpenGL Shader Language)
3) CG (C for Graphics)
이렇게 3가지 종류가 있다.
다루는 프로그램으로는 [Render Monkey]와 [Visual Shader Editor]가 있으나,
그래픽디자이너에게는 어려움.
■ Unity Shader
유니티의 장점 => "멀티플랫폼"
유니티 쉐이더 문법 : ShaderLab
=> 멀티플랫폼을 위한 문법..
1) ShaderLab: 유니티 자체 문법. 어디서나 빠르게 적용됨.
2) Surface Shader: 간략화버전, 추천!
3) Fragment Shader: 정통 HLSL식이나 너무 어렵다.
■ Surface Shader
*가장 쉽고 멀티플랫폼에 잘 대응되는 Shader
프로그래머가 아니어도 배우기 쉬운 개념.
+Matrix(행렬) 연산등이 없음.
++Visual Shader Editor와 상당히 개념적으로 비슷.
+++고급기술은 아쉽지만, 자동으로 도와준다는 장점!
++++가장 기초적인 C문법 "매우조금 필요"
● 프로그래밍 코딩의 기초.
1. 영어의 대소문자는 확실히 구분할것.
2. 괄호는 늘 닫아둘것
3. 띄어쓰기와 엔터는 의미가 없음 (예외는 존재)
4. ";"세미콜론은 엔터의 의미이다.
5. A=B에서 "="은 같다는 의미가 아니다. "B를 A에 대입한다"라는 의미이다.
6. //는 주석문이라는 의미이다. 메모장으로 이해하면 좋다. (맥스스크립트에서는 --로 쓰인다.)
7. 변수는 "변하는 수"라는 의미.
● Properties
프로퍼티는 Shader에 보여지는 조작가능한 Parameter를 만드는 항목이다.
유니티에 내장된 스크립트로 표현되기에, 대소문자는 중요하지 않다.
_Name ("display name", Range (min, max)) = number
_Name ("display name", Float) = number
_Name ("display name", int) = number
_Name ("display name", Color) = (number,number,number,number)
_Name ("display name", Vector) = (number,number,number,number)
_Name ("display name", 2D) = "name" {options}
_Name ("display name", Rect) = "name" {options}
_Name ("display name", Cube) = "name" {options}
_Name ("display name", 3D) = "name" {options}
** Range, Float, Color, 2D, Cube가 제일 많이 쓰인다.
----------
첫댓글 깔끔하게 정리했구만
공책에 한번 정리했다가 다시쓰다보니 ㅋㅋㅋㅋㅋ
@201031004 김보람 그럼 공부되고 좋지 ㅎ