일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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)
- Toon Shader
- Private Bytes
- 3d
- Cartoon Rendering
- 프로그래밍 기초
- VR
- AppSW
- ColorGradingLutPass
- Specular
- Cell Shader
- 가상 바이트
- Rim Light
- Windows Build
- 벡터
- 메모리 누수
- URP
- working set
- OculusMotionVectorPass
- Cell Look
- Three(Two) Tone Shading
- Virtual Byte
- C언어
- 작업 집합
- URP로 변경
- 개인 바이트
- Today
- Total
목록분류 전체보기 (258)
WinCNT
PBR은 특히 Specular를 위한 것이다 (대부분의 엔진에서 Diffuse는 그냥 N dot L함) 물체 겉면의 거친 정도에 따라 빛이 난반사되는 정도가 바뀐다 그 이유는 겉면이 거칠수록 미세면이 늘어나므로 그에 따라 빛도 난반사하게 되는 것이다 다시 말해 그러한 미세면을 전부 모델링할 수 있다면 복잡한 수식 없이도 사실적인 조명 연산이 가능할 것이다 하지만 이는 현실적으로 불가능하다 따라서 실제로는 거친 정도에 따라 미세면에 의한 난반사를 통계적으로 분석(근사)한 수식을 통해서 물리 기반 렌더링을 한다 매끈한 면과 거친 면의 반사 차이 왜 거친 면은 빛이 난반사 되는가 PBR 수식 F는 프레넬 항 https://gamedevforever.com/35 Fresnel Effect에 대하여. 안녕하세요 ..
DX10에서 DX11에서 특히 발전한 건 상수 버퍼에 관한 내용들 Draw Call(DrawIndex 등)를 하면 RAM의 값이 비디오 메모리, VRAM에 복사가 된다 GPU는 메인 메모리의 값을 접근할 수 없다 버텍스 버퍼를 생성할 때 버퍼를 어디에 생성할지 3가지 정도를 선택할 수 있다 1. 시스템 메모리에 생성 2. 버텍스 메모리에 생성 3. ??? HDD의 텍스트, 버텍스 정보들은 우선 RAM에 로드한 다음 그걸 PCI express를 통해 그래픽 카드에 값 복사를 한다 PCI express - 그래픽 카드를 꽂는 슬롯 다른 슬롯은 주고 받는 것에 특화되어 있지만 PCI는 보내는 것에만 특화되어 있다 물론 CPU는 VRAM에 있는 값을 읽어 올 수는 있기에 후다나 computer shading을 ..
프로세스와 DLL 코드와 데이터를 분리해서 생각하자 DLL 만들기(.dll) 무엇을 제공할 것인가 {코드와 데이터} dll은 보통 코드(함수)의 제공이 목적이다 무엇을 사용할 것인가 DLL 사용하기(.exe) 키워드 심볼 - 링커 입장에서 바라보는 이름이 심볼 심볼릭 obj파일에 포함에 들어있다 링커는 여러 obj, lib, dll에 있는 글로벌 변수, 스태틱 변수, 함수 이름(심볼)을 가져온다 심볼이 된 것들은 바이너리 파일(exe 등)에 포함되어 있다 dll의 심볼(함수)를 사용하는 방법은 2가지가 존재한다 1. 암시적(로드 타임) 2. 명시적(런 타임) DLL 파일의 이미지( = 내용물)는 어플리케이션이 DLL 파일 내에 포함된 함수를 호출하기 전에 반드시 프로세스의 주소 공간에 매핑되어 있어야 한..
DLL의 암시적 링킹과 명시적 링킹 DLL의 암시적 링킹(Implicit Linking)인 경우, 로드 타임에 DLL를 로드하기 때문에 프로그래머가 코드에 DLL를 넣지 않는다 (물론 DLL의 lib파일을 포함시켜야 한다) 하지만 DLL의 암시적 링킹의 경우는 DLL이 없을 경우는 실행 자체가 불가능해진다 반면 DLL의 명시적 링킹의 방법은 DLL의 로드가 런 타임 중에 일어나기 때문에 (적절한 예외 처리를 하면)프로그램의 실행에는 문제가 없다 명시적인 DLL 모듈 로딩 std::string path = "../x64/Debug/MyTestDLL.dll"; HMODULE hDll = ::LoadLibraryA(path.c_str()); LoadLibrary는 내부적으로 ANSI로 처리하기 때문에 보통 A..
정적은 복사본, 동적은 링킹만 함 (파일 안에 포함되지 않음) 명시적, 암묵적이 다르다 암묵적은 실행 시에 링킹됨 명시적은 프로그래머가 원하는 타이밍에 링킹함(교체 등의 컨트롤 가능) https://docs.microsoft.com/ko-kr/windows/win32/dlls/about-dynamic-link-libraries Dynamic-Link 라이브러리 정보 - Win32 apps 동적 연결을 사용하면 모듈이 로드 시간 또는 런타임에 내보낸 DLL 함수를 찾는 데 필요한 정보만 포함할 수 있습니다. docs.microsoft.com DLL을 로드하는 모든 프로세스는 해당 가상 주소 공간에 매핑한다 즉, 각각의 프로세스에 DLL이 로드된 가상 주소 공간은 다를 수 있다! DLL 내의 전역 및 정적 ..
프로세스의 가상 주소 공간 범위를 예약한다는 것은 --> 프로세스가 컴파일 될 때 코드 영역, BBS, 데이터, 스택 영역이 결정된다는 의미이다 주소 공간을 예약해도 실제 스토리지는 할당되지 않지만 다른 할당 작업에서 지정된 범위를 사용할 수 없다 VirtualAlloc 프로세스의 가상 주소 공간 범위를 예약합니다. 주소 공간을 예약해도 실제 스토리지는 할당되지 않지만 다른 할당 작업에서 지정된 범위를 사용할 수 없습니다. 다른 프로세스의 가상 주소 공간에는 영향을 주지 않습니다. 페이지를 예약하면 물리적 스토리지를 불필요하게 사용할 수 있지만 프로세스는 동적 데이터 구조가 증가할 수 있는 주소 공간 범위를 예약할 수 있습니다. 프로세스는 필요에 따라 이 공간에 대한 물리적 스토리지를 할당할 수 있습니다..
Blending 색을 섞는 행위 3D 그래픽스에서는 주로 픽셀의 색을 섞는 것을 의미한다 (hue saturation) 색을 섞는 행위 자체는 어디에나 일어날 수 있다 DX에서의 색의 값은 일반적으로 0~1이다 색상 간의 연산은 다양함 알파 값은 특별히 Alpha Blending 수많은 색상의 Blending 방법 중 하나일 뿐 섞는 방법은 여러가지가 있다 더하고 정규화하면 Hue의 중간 값, 곱하면 광원의 블렌딩 등등 DX의 Blending DX에서는 미리 Blending의 형태를 정할 수 있다 Target(보통 렌더 타겟)의 픽셀과 지금 그릴 픽셀 BlendState D3D11_BLEND enumeration D3D11_BLEND_OP enumeration RenderState와 비슷하게 비리 만들어..
Post Processing 모든 그리기가 끝난 다음, 뭔가 또 처리하는 것 Blur Bloom/Gloom HDR(Legacy나 PBR과 상관 없는 의미의 HDR) DOF(Depth Of Field, 피사계심도), ExponentialFog(깊이/거리 기반 안개), Motion Blur, SSAO 모든 Deffered Rendering의 기술 Deffered Renddering 픽셀 단위로 데이터가 들어오기 때문에 버텍스의 수와 많아도 상관 없다 픽셀 셰이더의 스펙이 높아지면서 빛을 발휘하기 시작했다 An Implementation of Post Processing 일단 텍스처(렌더 타겟)(들)에 모두 그린다! Blur는 한장, DOF는 두장이 필요하다 등등 그 텍스처들을 적절히 조작한다 화면을 모두 덮..
Depth Buffer 정확히는 Depth-Stencil Buffer 깊이 버퍼를 시각화한 버퍼! (주로 디퍼드 렌더링 상태 중 하나로 선택됨) 어떤 오프젝트가 앞에 있나 없나를 판단 Far면 0(흰색), Near는 1(검정) 디퍼드 렌더링에서는 깊이 버퍼 외에도 알베도(디퓨즈), 노멀 값, 월드 포지션 등등 다양한 데이터를 2차원 텍스처로 만든다 참고로 깊이 버퍼는 각 채널에 깊이 말고 스텐실 정보를 담을 수 있어서 Depth-Stencil Buffer라고 한다 (구성은 다를 수 있음) 스텐실은 거울, 호수 등에 사용되거나 한다 Render Target(렌더 타겟) 렌더링 되는 대상을 말한다 꼭 화면이 아니어도 된다(텍스처 등에 그릴 수도 있음) SRV(셰이더 리소스 뷰, Shader Resource ..
작업 집합(Working Set) 작업 집합은 프로세스에서 사용하는 총 물리적 메모리(RAM)을 나타내며, 프로세스의 스레드가 최근에 사용한 적이 있는 메모리 페이지 집합을 뜻한다 (작업 집합은 메모리에 매핑된 파일과 리소스도 포함) 작업 집합은 작업 관리자의 메모리 사용량에 모니터링되는 값과 동일하다 작업 집합의 메모리 페이지는 사용된 적이 있다는 것이지 현재 메모리에 로드되어 있다 뜻은 아니다(!) 컴퓨터의 여유 메모리가 임계값보다 높으면 사용 중인 아니더라도 메모리 페이지는 작업 집합에 남아있다 정리하자면 작업 집합은 페이징되지 않은 개인 바이트와, 메모리 매핑된 파일이라고 할 수 있다 가상 바이트(Virtual Byte) 가상 바이트는 프로세스가 차지하는 총 가상 주소 공간이다 가상 바이트는 작업..