분류 전체보기 119

45_RenderTarget

Framework ->DepthStencil.cpp, h (DSV 관련), RenderTarget.cpp, h (RTV 관련) 더보기 실행 보충 더보기 1. RenderTarget(RTV)관련 출력 기법은 OM관련 해서 다루는 기술이다 2. Render 영역에 총 3가지 있는데 이중 2가지는 PreRender : Render 출력 하기 전에 전 출력하는 정보를 저장 하는 공간 Render : PreRender의 정보나 화면에 실제로 출력 하는 영역 좀더 쉽게 예를 들면 PreRender에서 처리된 이미지의 정보를 RenderTarget에 담아서 동영상에 있는 Cube에 해당 이미지의 정보를 넘겨서 그려주고 있다 (동영상 참조) 3. 쉐이더 PS 에서 SV_Target 관련이 있다 4. RenderTarg..

44_Geometry

쉐이더 파일 더보기 Billboard.h cpp (GS 사용에 맞게 수정) 더보기 실행 3,4 : 카메라 따라 움직임 5번 이후 2D면 그림 형태으로 중심점으로 십자가 형태로 면 2개로 그려짐 5,6 : 뒷면이 안그려지는 문제 7,8 : 5,6번 해결 하지만 외각선 이 애매하거나 깊이 관련 문제가 있음 9 : 최종 해결 파이프 라인 보충 더보기 IA -> VS -> GS -> RS -> PS -> OM 2D영역 | 3D 영역 Geometry(GS) : 면 단위로 다루는 쉐이더 (컴퓨트 쉐이더(CS)에 가까움) 쓰임새 : 정점(VS)에서 1개 받아서 면을 그리기, 별도의 계산으로 삼각형을 그리거나 여러개의 정점을 받아서 1개로 계산 하는등 여러가지 계산 처리 하는 쉐이더 받을 대는 Point 형식으로 정점..

43_Particle

실행 실행 2 보충 더보기 1. 41_Billboard 원리를 이용해서 카메라(플레이어) 바라봄 2. 파티클 : 시간차를 두고 Texture가 그려지는데 입자 형식으로 그려줌 3. DSV 관련 쉐이더 옵션 건들어 줘야 하는데 IA -> VS -> RS -> PS -> OM 파이프 라인중 에서 RS 관련 RS단계에서 처리하면 Texture2D 형태로 RTV, DSV가 나오는데 용도가 다름 RTV : 색상 정보 값이 있고 PS단계를 걸치면서 렌더링 DSV : 깊이 정보 관련의 값만 가지고만 있음 OM에서 RTV, DSV값을 합쳐줌 여기서 DSV값을 조절해서 사용을함 4. 자세한 내용 : https://copynull.tistory.com/290 원문 : http://www.rastertek.com/dx11t..

42_Weather

쉐이더 파일 더보기 Framework-> Environment -> Rain, Snow 더보기 실행 보충 더보기 1. 41_Billboard 원리와 같이 무족건 카메라(플레이어) 바라봄 2. 비를 내리는 범위가 필요 3. 픽셀 알파값 처리 방법 으로 41번 처리 방법에서 BlendState를 통해서 (om) 처리 -> 문제점 : AlphaSorting 현상이 나타남 AlphaSorting 나타나는 이유 : RS에서 OM으로 다시 RTV, DSV 합칠때 깊이 값이 날라감(깊이 문제) 해결법 : BlendState 에서 AlphaToCoverageEnable 기능을 켜서 해결 ->문제점 : 외각선 분간이 애매할때 분간을 잘 못함 AlphaSorting

41_Billboard

쉐이더파일 더보기 Framework -> Objects(폴더) ->Billboard.cpp, h 더보기 실행 보충 더보기 Billbord 기법 (2.5D) 특징 : 오브젝트가 항상 카메라(플레이어)를 따라감 쓰는곳 : 대규모 오브젝트를 3D로 처리하기 보다는 2D로 그려서 사용 Billborad class 쓰는 핵심 1. C++ 에서 정점 위치값을 똑같은 값으로 정의 2. UV값을 통해서 정점 위치값을 펼침 예정 (그림 크기따라 변경) 3. Billborad의 부모인 Renderer에서 Initialize()함수 transform 관련 정의 할때 이미 D3DXMatrixIdentity 통해서 값을 전달함 쉐이더 VS 영역 처리 방법 1. 월드상의 좌표 기준으로 처리 (항등 월드) *쉐이더에선 w값이 1이..

40_AreaLighting(2) SpotLight

쉐이더파일 더보기 SpotLight 관련으로 추가 Framework -> Randers(폴더) -> Lighting.cpp 수정 더보기 SpotLight 관련으로 추가 실행 보충 더보기 PointLight와 다른점 : 조명이 나가는 방향, 조명의 Angle(각도) 가 있어야함 보충 Gizemo 관련 더보기 Gizemo : 개발자용 SRT조절 할 수 있게 해주는 UI 관련 https://github.com/CedricGuillemet/ImGuizmo Gizemo 관련 수정 사항 Framework -> Gui.cpp, h (Gizemo와 ImGui 관련 충돌 때문에 수정 해야함) Framework -> Window.cpp -> MainRender() 함수 내에 있는 ImGui 관련 수행 관련 변경 Frame..

40_AreaLighting(1) PointLight

쉐이더 파일 더보기 실행 수정해야 하는 클래스들 더보기 1. Context class에 있던 조명 관련 내용을 Lighting class에 옮김 2. PerFrame에 있던 Context 관련 내용 Lighting 클래스 함수 내용으로 변경 3. Lighting 싱글톤 클래스 이므로 Window 클래스에 해당 싱글톤 관련 선언 보충 더보기 1. Point Light의 중점에 가까우면 조명 색상에 맞게 반영 반대로 거리에 벗어나면 원리 기본 조명색에 반영 2. 기존에 썻던 Global 조명에서 이제 개별적인 조명 색상도 계산된 걸로 반영 (쉐이더 파일로 정의) 추가로 수정해야 하는 클래스가 많아서 별도로 파일은 안올림...

39_NormalMap

쉐이더 파일 더보기 Demo 파일 더보기 실행 보충 더보기 노멀맵 쓰는 이유 예전에 음영 관련해서 구현을 할때 폴리곤으로 구현 해서 정점이 많아져서 계산이 느렸지만 현재는 Normal Texture을 이용 해서 샘플링의 값을 이용해서 음영표현 계산 방식 1. Nomal Map 을 Sampling 한 후 법선 벡터 만듬 2. T, B, N 계산 (T에서 정규직교화 사용) (B에선 N과 T의 외적) 3. 2번한 값을 Lambert와 다시 계산 노멀맵 텍스쳐에서 파랑색이 찐할 수록 음영 부분에서 어두운 부분을 표현

38_Emissive

00_Light.fx 더보기 LightingDemo.cpp 더보기 실행 보충 더보기 실행 화면을 보면 기둥 겉면에 외각선 색상을 표현을 해서 어두운 곳 에서도 각각의 기둥을 볼 수가 있음 그림으로 값을 구하는거 표현을 하자면.. 초록색 : Normal 벡터 , 하늘색 : 카메라 방향으로 바라보는 벡터 초록색, 하늘색 내적을 해서 0에 가까우면 바깥에 있는걸로 판정을 해서 그쪽 부분만 색칠 하는 방법 기존에 Lerp 방법을 사용 하지않고 SmoothStep 이라는 함수를 사용

37_Specular

쉐이더 더보기 UnitTest -> LightingDemo 더보기 Update 영역 Mesh 생성 하는 부분 실행 보충 더보기 정반사 벡터(reflect) 스펙큘러 표현하는 방법 1. WorldNormal에 반사되는 벡터를 구한다 (빨강) 2. wPosition에서 카메라로 향하는 방향 벡터를 구한다 (주황) -> 추후에 다른 조명때도 공통으로 쓸 값 3. 1번과, 2번과 내적(Dot)을해서 1에 가까우면 정확하게 비춰짐 (노랑) 4. 정구 강도 :Pow(dot , Shiness) Shiness : 이값이 크면 클수록 결과 값이 작아짐 (초록) 도움되는 사이트 https://cpetry.github.io/NormalMap-Online/ Diffuse, NormalMap, specular 맵같은걸 만듬 반..