일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ASW(Application SpaceWarp)
- Specular
- C언어
- OculusMotionVectorPass
- URP
- AppSW
- Windows Build
- URP로 변경
- 개인 바이트
- ColorGradingLutPass
- VR
- 게임 수학
- Cell Shader
- Rim Light
- Cartoon Rendering
- Toon Shader
- 작업 집합
- 메모리 누수
- Private Bytes
- working set
- Three(Two) Tone Shading
- Cell Look
- 벡터
- 3d
- Virtual Byte
- 프로그래밍 기초
- 가상 바이트
- Today
- Total
목록전체 글 (258)
WinCNT
데이터와 파일 파일은 메모리에 올라간다 (파일 --> 리소스 --> 메모리에 적재) 그럼 리소스를 어떻게 관리해야 할까? 프로그래머는 플레이 진행 상태만 파일 형태로 저장할 수 있다 (정확히는 DB지만 DB도 결국엔 파일과 다를 것이 없다) 그렇기 때문에 구조와 규칙을 먼저 만들 필요가 있다 그에 대해 필요한 것이 보통 DB와 그에 따른 SQL이다 SQL Structured Query Language 몽고DB(NoSQL의 분류) 이미지 등의 리소스를 대용량으로 저장하고 빠르게 가져오게 하기 위한 DB(페이스북 등) 레디스(Redis) 메모리 DB - 메모리에 잔뜩 데이터를 적재해두는 것 결국은 설계다!! 메모리 메모리는 다음의 영역을 가진다 스택 영역, 힙 영역, 데이터 영역, 코드 영역 메모리 할당 프..
인간의 눈은 밝기의 절대값을 인지하는 것이 아니고 밝기 값의 차이를 인지한다!! HDR 고정밀도로 표현하자 화면에 보이는 디스플레이는 정수 버퍼 즉, 최종 출력은 정수 버퍼로 해야 한다 하지만 실수 연산을 해주는 중간의 렌더링 전용 백버퍼를 만들면 고정밀도로 연산을 할 수 있다 Tonemapping HDR --> LDR? HDR을 하게 되면 무조건 필요하다 HDR은 1.0 이상의 값으로 연산을 하지만 최종적으로 모니터에 출력하기 위해서는 1.0 이하의 값으로 보간해야 한다 즉 최종적으로 제일 밝은 값은 1.0이 될 것이고 다른 값들은 Tonemapping 기법에 맞춰서 더욱 어두워질 것이다 Tonemapping에는 여러가지 기법이 있으며, 원하는 이미지에 맞춰서 잘 선택해야 한다 Linear, 레이하드,..
원리는 어렵지만 구현은 코드 2줄(...)이다 영화 산업에서는 이미 오래 전(!!)부터 Gamma Corretion은 사용되고 있었다 0 ~ 255의 중간은? 아쉽게도 127이 아니다!! 모든 광학 기기들(모니터, 스마트폰 등등)은 선형으로 보간하지 않는다 Gamma Cureve란 무엇인가? 모든 Display는 Gamma Decode를 하고 있다 따라서 Gamma Decode의 역함수인 "Gamma Encode"를 해줘야 한다 하드 디스크에 저장하는 이미지는 내부적으로 Gamma Encoding을 시킨 이미지가 저장된다!! 왜 Gamma Encode를 하는가? Gamma 비선형 함수 애플 모니터의 경우에는 2.0을 사용한다 그래서 뭐가 문제인가? 연산을 다른 공간에서 하고 있으니 평범하게 조명 연산을 ..
데이터를 어떻게 해석할 것인가 1. 문자 집합과 문자열은 다르다 다른 걸 어떻게 알 수 있지?(해석의 단초) Null Terminate 문자열 조작 실수 중에 오버플로우 문제 10바이트 배열에 문자 10개를 넣으면 버그가 발생한다... (하도 실수를 많이해서 _s가 붙은 함수가 생김) 2. 문자 --> 문자를 해석하는 단위 1바이트 --> char burffer[10] 2바이트 --> wchar wBuffer[10] 4바이트 --> int intBuffer[10] 멀티바이트와 유니코드 멀티바이트 : 문자를 해석할 때 해석할 때마다 바이트 수가 다름 유니코드 : 문자를 해석할 때 고정 바이트로 해석함 (고정 바이트의 크기는 2byte 혹은 4byte) 사실 유니코드 자체는 유니코드는 국제표준 문자표일 뿐이..
1. 블로킹 모델 읽을 것이 있을 때까지 대기하는 모델 2. Async(혹은 Event) 읽을 것이 있으면 그 때 (호출이 와서) 읽음 하지만 싱글 스레드로 구성할 경우는 계속 호출이 왔는지 확인하므로 결과적으로는 블로킹 모델과 비슷하게 동작한다 (그러니 대부분은 멀티 스레드로 구현한다) 3. IOCP(Input/Ouptput Completion Port) 읽을 것이 있으면 포장해서 줌 오버랩드(Overlapped) 구조체를 이용해서 비동기로 읽음 필연적으로 Recv를 스레드가 필요하고 완료됐는지 확인이 필요하다 CP : Complition Port 수신된 게 있으니 가져가서 처리하라고 알려줌 특성에 맞게 코딩하자 SSS
네트워크 프로그래밍과 서버 프로그래밍이란? 게임 서버를 만든다는 것과 게임 서비스란? 네트워크 게임과 온라인 게임이란? OOP과 메시지 큐 객체 간의 관계가 있고 서로 통신한다 객체에 큐를 달고 보내고 싶은 메시지를 Send하면 된다 예를 들어 네트워크에서 클래스ID와 Move를 받았으면 바로 Move를 호출하는 것이 아니라 해당 클래스 객체의 메시지 큐에 Move라는 메시지를 push할 뿐!! 객체는 주어가 될 수 있으며, 능동적일 수도 있고 수동적일 수도 있다 (데이터는 목적어) 객체 간의 통신은 큐에 메시지를 넣는 방식을 취한다 데이터를 어떻게 처리할 것인가? 클라 서버 요청과 응답 클라이언트와 서버의 관계 극단적인 예 1. 서버가 없는 싱글 게임인 경우 2. 클라는 터미널 역할만 하고 나머지 모든..
보호되어 있는 글입니다.
구현은 어렵지 않지만 원리는 어렵다 Normal, Light 노멀 "맵" Map 자체는 텍스처이므로 Diffuse처럼 읽으면 된다 (SRV로 Shader로 보내면 됨) 노멀 맵 자체는 텍스처와 마찬가지로 RGB의 정보이다 Normal Map은 텍스쳐의 RGB 정보에 노말벡터 XYZ를 인코딩한 맵이다 하지만 그 노말 좌표들은 모두 접선 공간(Tangent Space)을 기준으로 작성된다 노멀 맵 쓰는 이유는 픽셀당 조명(Per-Pixel Lighting)을 구현하기 위해서이다 이러한 노말들을 객체공간으로 변환시키기 위해서는 정점마다 접선(Tangent)과 종법선(Binormal), 그리고 법선(Normal) 정보를 가지고 있어야 한다 정점 쉐이더에서 접선과 종법선, 법선을 픽셀로 넘긴 다음 픽셀 쉐이더에서..
Picking 3D 게임에서 뭔가를 집으려면? 2D의 경우 마우스 위치와 스크린의 해상도가 일치함 즉 좌표계가 1:1로 대응하므로 쉬움 3D의 경우 3D에서는 프러스텀, 보이는 영역 안에서 집는 것 Near, Par로 봐도 되고, 카메라의 전방 벡터로 해도 되고... Picking Ray 피킹 지점에서 레이를 쏴서 집는다 깊이에 따라 여러 개가 교차 가능하며 보통은 카메라와 거리 계산을 통해 가장 가까운 것을 잡도록 한다 계산 Screen 좌표계 -> NDC 여기서 Near-Far 반직선을 구함 NDC -> World 월드 공간에서 교차를 구하면 된다 주의점들 직접 구현할만한 것은 Shere와 AABB정도라고 한다 OBB는 상당히 복잡한듯... (함수 쓰자) SSS
4계층: 응용 계층 TCP/UDP 기반의 응용 프로그램 3계층: 전송 계층 프로세스 간의 신뢰성 있는 데이터 전송을 담당 TCP, UDP 2계층: 인터넷 계층 호스트 간의 라우팅 담당 인터텟 프로토콜 > IP 패킷을 만듬 { IP 헤더 + 데이터} 주소 변환 프로토콜 > ARP(IP --> MAC), RARP(MAC --> IP) 상태진단프로토콜 > ICMP 1계층: 네트워크 인터페이스 계층 Node-To-Node간의 신뢰성 있는 데이터 전송을 담당 물리적인 주소로 MAC 사용 에러 검출 기능, 패킷의 프레임화 https://www.itworld.co.kr/tags/6436/%ED%94%84%EB%A0%88%EC%9E%84/106484 이더넷 프레임과 패킷의 차이 이더넷 데이터에 대해 이야기할 때, 프레..