inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

잘 이해했는지 확인 받고 싶습니다(Normal Map)

미해결

[게임 프로그래머 도약반] DirectX11 입문

안녕하세요 이번 강의를 잘 이해했나 의문이 들어서 질문 남깁니다 먼저 제가 이해한 내용을 설명해보자면 Normal Map이란 어떤 물체의 세부적 표현을 정점의 추가 없이 표현하기 위해서 나온 기술?이고 해당 Map의 각 픽셀의 RGB 값을 x, y, z로 해석하여 float4 map = NormalMap.Sample(LinearSampler, uv); [0, 1] 구간으로 변환 후 3D 세상에서 표현하기 위해 [-1,1]구간으로 변환 한다 float3 tangentSpaceNormal = (map.rgb * 2.0f - 1.0f); 그리고 이 값을 World좌표계로 변환하기위해 탄젠트 스페이서에서의 t,b,n을 좌표 변환 공식?에 의해 [tx, ty, tz] [bx, by, bz] [nx, ny, nz] 행렬이 나오게 되고 이러한 TBN 행렬을 이용해서 World 좌표로 치환할 수 있다 이렇게 정리해봤는데 잘못 이해하거나 누락된 부분이 있을까요?

  • c++
  • directx
toyboy0113 댓글 1 좋아요 0 조회수 358

Normal.fx파일에서 normalize

미해결

[게임 프로그래머 도약반] DirectX11 입문

안녕하세요 제가 알기로는 output.normal = mul(input.normal, (float3x3)World); 이렇게만 해줘도 월드 좌표에서의 단위벡터로 만들어 주는걸로 알고 있는데 GeometryHelper.cpp 파일에서 CreateSphere 메서드에서 v.normal = v.position; v.normal.Normalize(); Normal.fx 에서 normalize(input.normal) 위 1, 2 부분에서의 normalize를 안해도 별 차이 없지 않나요? 혹시 차이가 있다면 어떤 부분에서 차이가 있을까요? 아니면 제 개념이 틀렸을까요?

  • c++
  • directx
toyboy0113 댓글 2 좋아요 0 조회수 187

높이보정 식이 이해가 안됩니다

미해결

[게임 프로그래머 도약반] DirectX11 입문

vector<VertexTextureData>& v = const_cast<vector<VertexTextureData>&>(_geometry->GetVertices()); for (int32 z = 0; z < height; z++) { for (int32 x = 0; x < width; x++) { int32 idx = width * z + x; uint8 height = pixelBuffer[idx] / 255.f * 25.f; v[idx].position.y = height; // 높이 보정 } } 이 부분을 계속 돌려봐도 이해가 안되는데 높이보정할 때 왜 저 식이 나오는건가요?

  • c++
  • directx
H_dong 댓글 1 좋아요 0 조회수 175

nullptr오류가 발생해요.

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

nullptr 오류가 왜 발생하는 걸까요? 코드는 복붙 해서 아마 다 같을 거에요.

  • directx
  • 게임수학
댓글 2 좋아요 0 조회수 392

계층구조 질문있습니다.

미해결

[게임 프로그래머 도약반] DirectX11 입문

탱크를 그릴떄 본매트릭스를 넘겨줘서 포지션을 이동시켜주는것처럼 탱크의 노말도 본매트릭스를 이용하여 회전시켜주는게 맞지않나용?

  • c++
  • directx
pakheae 댓글 1 좋아요 0 조회수 225

첫 강의 pch.h 작성 단계에서 LNK1104 오류가 납니다 ㅠ

미해결

[게임 프로그래머 도약반] DirectX11 입문

pragma comment로 불러오는 다른 lib들은 다 에러 없이 넘어가는데요, 정작 걱정했던 DirectXTex 들은 조용하지만 LNK1104 'd3dcompiler.lib' 파일을 열 수 없습니다. 저 d3dcompiler친구만 오류를 뿜뿜합니다ㅠ 이를 어쩌면 좋을까요 선생님 😣

  • c++
  • directx
화사한 알파카 댓글 2 좋아요 0 조회수 466

Normal Mapping / Assertion failed! 오류

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

Normal Mapping 강의에서 veiga.jpg를 제가 다운받아온 Stone.jpg로 바꾸고 디버깅해보니 이렇게 뜨네요 크래시 난곳은 여기입니다.

  • directx
  • 게임수학
유민영 댓글 1 좋아요 0 조회수 244

1>LINK : fatal error LNK1104: 'Engine.lib' 파일을 열 수 없습니다.

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

장치초기화 파트에서 제가 무언가를 놓친거 같습니다... 클라이언트 프로젝트를 시작으로 놓고 하였는데 저런 에러가 뜹니다. 무엇이 문제일지 궁금합니다.

  • directx
  • 게임수학
댓글 2 좋아요 0 조회수 452

shared_ptr 과 헤더파일 관련하여 질문있습니다

해결됨

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

Engin.h 에서 #pragma once class Engine { public: void Init(const WindowInfo& window); void Render(); void ResizeWindow(int32 width, int32 height); private: WindowInfo _window; D3D12_VIEWPORT _viewport = {}; D3D12_RECT _scissorRect = {}; shared_ptr<class Device> _device; shared_ptr<class CommandQueue> _cmdQueue; shared_ptr<class SwapChain> _swapChain; shared_ptr<class DescriptorHeap> _descHeap; }; 여기서 #include <memory>를 하지 않고도 shared_ptr이 컴파일이 가능한 이유가 뭔지 알수 있을까요...?

  • directx
  • 게임수학
hush park 댓글 1 좋아요 0 조회수 233

질문있습니다.

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

질문1) D3D12_DESCRIPTOR_RANGE ranges[2] = { { D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 5, 0, 0, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND }, // b0 ~ b4 { D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 5, 0, 0, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND } // t0 ~ t4 }; CD3DX12_ROOT_PARAMETER rootParameters[1] = {}; rootParameters[0].InitAsDescriptorTable(_countof(ranges), ranges, D3D12_SHADER_VISIBILITY_ALL); 와 같이 루트시그니처에서 테이블의 사용범위를 넓게잡아두고 사용할때만 Shader 에서 buffer를 정의 ( ex :cbuffer WVP: register(b0 )해서 사용해주고있는데 테이블힙의 메모리 낭비를 제외하면 성능에 큰 악영향이 있을까요? 런타임에 터지거나 하는 오류는 현재 없는데 궁금해서 여쭤봅니다. 질문2) 제가 이해한게 맞나 궁금해서 질문드립니다. 질문1의 방식처럼 rootSignature 를 만들었다고 하였을때 , SetGraphicsRootDescriptorTable 함수인자에 핸들값을 넣을때 RootSignature 에서는 b0~b5 ,t0~t5 의 총10개를 사용한다고 서명했기떄문에 , DX에서 읽을때 10개단위로 읽어주기 때문에 선두에 있는 handle 값만 넣어주는 방식이 맞나요?

  • directx
  • 게임수학
pakheae 댓글 1 좋아요 0 조회수 198

질문있습니다.

미해결

D3D12 프로그래밍 - 기초편

안녕하세요 공부하다가 몇가지 궁금한게 생겨 여쭤봅니다. 질문1) D3D12_DESCRIPTOR_RANGE ranges[2] = { { D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 5, 0, 0, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND }, // b0 ~ b4 { D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 5, 0, 0, D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND } // t0 ~ t4 }; CD3DX12_ROOT_PARAMETER rootParameters[1] = {}; rootParameters[0].InitAsDescriptorTable(_countof(ranges), ranges, D3D12_SHADER_VISIBILITY_ALL); 와 같이 루트시그니처에서 테이블의 사용범위를 넓게잡아두고 사용할때만 Shader 에서 buffer를 정의 ( ex :cbuffer WVP: register(b0 )해서 사용해주고있는데 테이블힙의 메모리 낭비를 제외하면 성능에 큰 악영향이 있을까요? 런타임에 터지거나 하는 오류는 현재 없는데 궁금해서 여쭤봅니다. 질문2) 제가 이해한게 맞는건지 모르겠습니다. 현재 영천님 의 코드처럼 pool 방식으로 디스크럽터를 넓게만들어두고 할당받는 방식으로 코드를 만들어보고있는데 질문1의 방식처럼 rootSignature 를 만들었다고 하였을때 , SetGraphicsRootDescriptorTable 함수인자에 핸들값을 넣을때 그림에 빨간 화살표에 있는 선두에 있는 handle 값만 넣어주면 RootSignature 에서는 b0~b5 ,t0~t5 의 총10개를 사용한다고 서명했기떄문에 , DX에서 읽을때 10개단위로 읽어주기 때문에 10개가 모두 테이블에 바인딩되는 구조인가요? 다음 오브젝트를 그릴때는 , 오프셋 10칸을 건너뛴 다음 b0 부터 할당받아서 테이블에 바인딩해주고

  • directx
  • directx-12
  • d3d
  • directx12
dltmddnr05 댓글 2 좋아요 0 조회수 474

장치 초기화 nullptr이 자꾸 발견 되네요.

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

Engine.cpp 파일에서 _device->Init(); cmdQueue->Init( device->GetDevice(), swapChain, descHeap); swapChain->Init(info, device->GetDXGI(), _cmdQueue->GetCmdQueue()); descHeap->Init( device->GetDevice(), swapChain); 이부분에서 자꾸 하나씩 nullptr이 발견되네요. 처음엔 제가 틀리게 작성한 부분이 있겠지해서 swapChin에서 nullptr이 나와서 찾아보다가 나중엔 그냥 자료파일로 덮어쓰기를 했는데도 이번엔 descHeap-> rtvHeap이 nullptr이라는 오류 메시지가 나오네요. 강의자료를 복붙해도 나오는nullptr은 어떻게 해결해야 할까요 ㅠ

  • directx
  • 게임수학
김강연 댓글 2 좋아요 0 조회수 321

노트북에서 정점만 보이는 버그

미해결

[게임 프로그래머 도약반] DirectX11 입문

데스크톱에서 잘 돌아가다가 노트북 쓸 일이 있어서 그 프로젝트 파일 그대로 노트북에 옮겨서 하려는데 오브젝트들이 점으로만 나타나고 그려지지 않아요.. 왜그런건가요? gpu문제인가요?

  • c++
  • directx
H_dong 댓글 2 좋아요 0 조회수 312

pch 에 문제가 생긴 것 같습니다!!!!!

미해결

[게임 프로그래머 도약반] DirectX11 입문

미리 컴파일된 헤더로 설정해 놓은 pch.h 파일에서 유독 #include "Transform.h" 를 못 받아들이는 것 같습니다. 계속해서 "'Transform': 선언되지 않은 식별자입니다." 라는 오류가 발생하고 신기한 건 #include "Transform.h"의 위치를 윗줄로 옮기면 그 밑에서 include 해주는 헤더파일도 동일하게 못받아들이고 "선언되지 않은 식별자입니다" 라고 에러를 뱉고 있습니다. 이런 경우는 어떤 해결 방법이 있을까요?ㅜㅜㅜㅜㅜㅜㅜㅜㅜ

  • c++
  • directx
남경태 댓글 2 좋아요 0 조회수 519

2주차 좌표계 변환 공부하다가 의문이 생겼습니다.

미해결

[게임 프로그래머 도약반] DirectX11 입문

물체의 위치를 좌표계 변환할 때와 방향벡터를 좌표계 변환할 때 위치 벡터의 표현이 달라진다고 배웠습니다. 그런데 방향벡터는 실제 게임 상에서 어떤 것들을 표현하기 위해서 사용되는지 궁금합니다.

  • c++
  • directx
허세진 댓글 1 좋아요 0 조회수 223

DirectXTex_debug.lib 파일 문의

미해결

[게임 프로그래머 도약반] DirectX11 입문

섹션 1. DirectX11 입문 (1주차) 기본 프레임워크에서 DirectXTex_debug.lib 파일을 구하기 위하여 DirectXTex_Desktop_2022 솔루션을 Visual Studio 2022에서 디버그 모드로 빌드를 해도 파일이 보이지 않습니다. 빌드할 때 빌드 구성(Configuration)을 ‘Debug’로 설정하고, 플랫폼을 ‘x64’ 로 선택 후 빌드하였습니다. 빌드 과정에서 에러는 없었구요. DirectXTex_debug.lib 이 파일은 어떻게 얻을 수 있나요.

  • c++
  • directx
조하늘 댓글 2 좋아요 0 조회수 483

안녕하세요 질문있습니다

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

for (int i = 0; i < v mesh.size(); ++i) { _shader->SetPipelineState(); core->GetCmdList()->IASetVertexBuffers(0,1,&_v_mesh[i]->GetVertexView()); core->GetCmdList()->IASetIndexBuffer(&_v_mesh[i]->GetIndexView()); _transform->Update(); core->GetTableHeap()->BindTexture(_texture->GetCpuHandle(), SRV_REGISTER::t0); core->GetTableHeap()->CommitTable(); core->GetCmdList()->DrawIndexedInstanced(_v_mesh[i]->GetIndexCount(), 1, 0, 0, 0); } DX11 버전에서 제공해주신 모델 탱크 를 로딩하려고Assimp 를 사용하였는데 , vmesh 사이즈가 12이라 12번 계속 반복해주는 코드를 작성하였는데 _v_mesh[0] 번째 정보만 바인딩되는데 문제가뭘까요..

  • directx
  • 게임수학
댓글 1 좋아요 0 조회수 220

DirectX11 강의 질문

해결됨

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

안녕하세요 완강하고 질문드립니다. 루키스님 말씀대로 모든걸 다 이해하기보다는 개념적인 부분은 개념으로 듣고 많은 부분들을 들을 수 있어 감사합니다. 그래도 아직 부족함을 느끼고 어려운 개념들이 너무 많아서 DirectX 11 강의도 볼 까 고민중인데 이 강의랑 비슷한 맥락으로 진행되는지 궁금합니다. 차이가 있다면 어떤차이가 있는지, 해당강의를 들을것을 추천하시는지도 궁금합니다.

  • directx
  • 게임수학
오늘의논리 댓글 1 좋아요 0 조회수 371

3D 입문 프로젝트 설정강의 마지막 삼각형이 안나와요

미해결

[게임 프로그래머 도약반] DirectX11 입문

fx파일 로드랑 테크닉, 패스 갯수랑 모두 정상이고, draw 실행도 들어오는데 빨강 삼각형이 안뜹니다.. 그래픽 카드는 AMD 쓰고있어요. 강의자료 다운받은거로 해봐도 회색 화면만 뜹니다 ㅠㅠ

  • c++
  • directx
라이언 댓글 2 좋아요 1 조회수 317

World 행렬 생성중 회전행렬 값에 대하여 의문이 있습니다.

미해결

[게임 프로그래머 도약반] DirectX11 입문

유니티에서 회전행렬을 확인 해보고자 출력을 했을 때. 이렇게 출력을 하였습니다. Transform을 해당 값으로 맞춰놓고 작업을 하였는데 Log 값은 이렇게 출력되었습니다. 여기서 의문점인경우가 Z축 회전 행렬을 적용하면 C -S 0 0 S C 0 0 0 0 0 1 0 0 0 1 이 적용이 되어야 하는데 Log 값으로 출력되는것을 보면 Sin값 적용부분에서 C -S S C 가 아닌 C S -S C 로 적용되는걸 알 수 있는데 왜 이렇게 값이 나오는 것인지 궁금합니다. (부호가 왜 바뀌어서 나오는지 궁급합니다.) X축 , Y축 , Z축 동일하게 출력을 해 보았으나 모두 다 같습니다...

  • c++
  • directx
이규식 댓글 3 좋아요 0 조회수 421

인기 태그

인프런 TOP Writers

주간 인기글