25_Viewport ViewportDemo.cpp, h (UnitTest 솔루션) 더보기 실행 보충 더보기 1. VS(3D) -> RS(2D) 변환시 Shader(hlsl)에서 RTV, DSV 2가지 정보값이 나옴 2. Viewport : OM에서 RTV + DSV 처리한 결과를 전체 화면에 출력 3. 미니맵 같은걸 만들때 사용 (더 좋은 방법은 RenderTargetView로 만듬 총 8장) 4. View : 카메라 시작점 DirectX/DirectX 3D_(구) 2021.08.02
24_StructuredBuffer(CS) Buffers.cpp, h (수정) 더보기 ModelAnimator.cpp ,h (수정) 더보기 24_GetBones.fx Collider.cpp, h (충돌 박스) 더보기 AnimationDemo.cpp 더보기 실행 DirectX/DirectX 3D_(구) 2021.08.02
23_TextureBuffer (CS) 23_Render2D.fx (출력용) 더보기 #include "00_Global.fx" #include "00_Light.fx" cbuffer CB_Render2D { matrix View2D; matrix Projection2D; }; struct VertexInput { float4 Position : Position; float2 Uv : Uv; }; struct VertexOutput { float4 Position : SV_Position; float2 Uv : Uv; }; VertexOutput VS(VertexInput input) { VertexOutput output; output.Position = WorldPosition(input.Position); output.Position = .. DirectX/DirectX 3D_(구) 2021.07.29
22_RawBuffer (CS) Buffers.cpp, h 더보기 22_ByteAddress.fx 더보기 //c++ 에선 RawBuffer라고 부르고 쉐이더에선 ByteAddress 부름 RWByteAddressBuffer Output; //출력용이면 앞에 RW붙여줘야함 ByteAddressBuffer Input; //저장용 (Output) struct Group { uint3 GroupID; uint3 GroupThreadID; uint3 DispatchThreadID; uint GroupIndex; }; //받아오는용(Output) struct ComputeInput { uint3 GroupID : SV_GroupID; uint3 GroupThreadID : SV_GroupThreadID; uint3 DispatchThreadID .. DirectX/DirectX 3D_(구) 2021.07.28
21_Thread ThreadDemo.cpp, h 더보기 #include "stdafx.h" #include "ThreadDemo.h" void ThreadDemo::Initialize() { //일반 반복문 { //Loop(); } //Thread { //MultiThread(); //Mutex(); //RacCondition(); ExcuteTimer(); } } void ThreadDemo::Update() { progress += 0.1f; ImGui::ProgressBar(progress / 1000.0f ); } void ThreadDemo::Loop() { for (int i = 0; i < 100; i++) printf("Loop1 : %d\n", i); printf("Loop1 End\n"); for (i.. DirectX/DirectX 3D_(구) 2021.07.28
20_ModelAnimation 보충 1 더보기 1. 애니메이션 관련 값 중 회전 정보는 쿼터니온 값으로 전달 해준다 2. asClipNode > asKeyframeData > asKeyframe > asClip 순으로 애니메이션 정보 저장 asClipNode : ai추출 해서 최초 저장하는 공간 asKeyframeData : 한개의 bone 가지는 SRT 정보 asKeyframe : asKeyframeData의 집합(해당bone의 정보) asClip : 최종 집합 3. 애니메이션 프레임키를 가져올때는 S,R,T 중에서 최종적으로 제일 긴 프레임을 가져와서 사용 4. asBlendWeight 최종 스키닝 정보가 저장 하기전에 asBoneWeights를 통해서 계산을 하고선 저장 5. 애니메이션은 Mesh, Material 관련이 없으므.. DirectX/DirectX 3D_(구) 2021.07.26
19_ModelMaterial [2/2] Material.cpp, h (머티리얼 정보 쉐이더에 넘기거나 수정) 더보기 #include "Framework.h" #include "Material.h" Material::Material() { Initialize(); } Material::Material(Shader * shader) { Initialize(); SetShader(shader); } void Material::Initialize() { diffuseMap = NULL; specularMap = NULL; normalMap = NULL; buffer = new ConstantBuffer(&colorDesc, sizeof(ColorDesc)); } Material::~Material() { SafeDelete(diffuseMap); S.. DirectX/DirectX 3D_(구) 2021.07.19
19_ModelMaterial [1/2] Types.h (모델 관련 구조체들 정의 된곳) 더보기 #pragma once #include "stdafx.h" struct asBone { int Index; string Name; int Parent; Matrix Transform; }; struct asMeshPart { string MaterialName; //DPCall에서 사용하기 위함 UINT StartVertex; UINT VertexCount; UINT StartIndex; UINT IndexCount; }; struct asMesh { int BoneIndex; vector Vertices; vector indices; vector MeshParts; }; struct asMaterial { string Name; Color Ambi.. DirectX/DirectX 3D_(구) 2021.07.17
18_ModelEditor [2/2] Framework(솔루션) -> Model.cpp, h 더보기 #include "Framework.h" #include "Model.h" #include "Utilities/BinaryFile.h" Model::Model() { } Model::~Model() { for (ModelBone* bone : bones) SafeDelete(bone); for (ModelMesh* mesh : meshes) SafeDelete(mesh); } void Model::ReadMesh(wstring file) { file = L"../../_Models/" + file + L".mesh"; BinaryReader* r = new BinaryReader(file); UINT count = 0; count = r->U.. DirectX/DirectX 3D_(구) 2021.07.14
18_ModelEditor [1/2] 시작전에 Model 파일을 추출 저장 하기위한 솔루션 하나를 생성 그럼 아래와 같이 3개의 솔루션이 나오고 시작 프로그램을 ModelEditor로 걸고 종속성도 수정 ModelEditor(솔루션) -> stdafx.h 더보기 #pragma once #include "Framework.h" #pragma comment(lib, "../Debug/Framework.lib") //모델 변환 하는 파일들 //디자인이 만든 모델 파일을 불러옴 (fbx, obj) #include "Assimp/Importer.hpp" //소스로 불러올때 다양한 옵션을 줄 수 있음 (좌표계, UV 읽어오는 순서) #include "Assimp/postprocess.h" //postprocess를 통해 불러온 값 (RootNode -.. DirectX/DirectX 3D_(구) 2021.07.13