⭐ DirectX/DirectX11 3D
[DirectX11] 081~82 Normal Mapping
[DirectX11] 081~82 Normal Mapping
2023.03.27글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자입니다 목차 Normal Mapping Shader Light.fx Lighting.fx Render.fx PointLighting.fx SpotLighting.fx NormalMapping.fx Framework Meshes Mesh.h - VertexTextureNormalTangent 추가 MeshCylinder.cpp - vertex.tangent, MeshVertex 추가 MeshGrid.cpp - vertex.tangent, MeshV..
[DirectX11] 080 Spot Lighting
[DirectX11] 080 Spot Lighting
2023.03.26DirectX 11에서 Spotlight를 만들기. Spotlight용 셰이더를 작성한다. 먼저, 셰이더 상수 버퍼를 정의한다. ObjectTransforms 상수 버퍼는 개체의 변환 행렬을 저장하고 SpotLightBuffer 상수 버퍼는 스포트 라이트의 위치, 방향, 색상 및 라이트의 스포트 파라미터를 저장한다. Spotlight 셰이더의 VSMain 함수는 입력 버텍스의 위치와 법선을 투영 공간으로 변환하고 광원 공간으로 변환한다. 목차 Spot Lighting DirectX 11에서 Spotlight를 만들기 Spotlight용 셰이더를 작성한다. 먼저, 셰이더 상수 버퍼를 정의한다. ObjectTransforms 상수 버퍼는 개체의 변환 행렬을 저장하고 SpotLightBuffer 상수 버퍼는 ..
[DirectX11] 078~79 Point Lighting, HLSL [flatten] [branch]
[DirectX11] 078~79 Point Lighting, HLSL [flatten] [branch]
2023.03.21DirectX 11에서 Point Light를 사용하기 위해서는 먼저 씬에서 조명을 설정하고 빛을 발산하는 위치를 지정해야 한다. 이 위치는 3D 공간에서 벡터로 표시된다. 그 다음 셰이더 프로그램에서 Point Light를 처리할 수 있는 코드를 작성해야 한다. 일반적으로 Point Light를 처리하기 위해 사용되는 기술은 Phong Lighting 모델이다. 목차 Lighting Shader Light.fx Lighting.fx PointLighting.fx Framework Renders PerFrame .cpp Shader Lighting PointLightingDemo.h .cpp Point Light DirectX 11에서 Point Light를 사용하기 위해서는 먼저 씬에서 조명을 설정하고..
[DirectX11] 075~77 Lighting, HLSL
[DirectX11] 075~77 Lighting, HLSL
2023.03.18DirectX 11에서 Lighting을 구현하려면, HLSL(고수준 셰이더 언어)을 사용하여 셰이더 코드를 작성해야 한다. HLSL은 Direct3D에서 셰이더 프로그래밍을 위해 사용되는 언어로, 셰이더 코드를 작성하고 컴파일하여 GPU에서 실행할 수 있는 바이너리 코드로 변환한다. 목차 Lighting Lighting을 구현하는 방법은 다양하지만, 일반적으로는 Phong 또는 Blinn-Phong Lighting 모델을 사용한다. 이 모델은 ambient, diffuse, specular lighting을 사용하여 표면의 색상을 계산한다. 각각의 조명 구성 요소는 다음과 같이 계산된다. Ambient lighting float4 ambientColor = float4(0.2, 0.2, 0.2, 1.0..
[DirectX11] 074 Instancing
[DirectX11] 074 Instancing
2023.03.18글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자입니다 목차 Instancing Shader Render.fx Global.fx Framework Meshes MeshRender.h .cpp Model ModelAnimator.h .cpp fx Render.fx Global.fx 메쉬에 적용할 color 추가 ModelAnimator ModelAnimator.h 더보기 #pragma once class ModelAnimator { public: ModelAnimator(Shader* shade..
[DirectX11] 071~73 Get MultiBones
[DirectX11] 071~73 Get MultiBones
2023.03.15DirectX 11에서 Multibones는 스켈레탈 애니메이션을 구현하는 데 사용되는 기술이다. 스켈레탈 애니메이션은 3D 모델의 뼈대와 관련된 것으로, 모델이 움직이는 동안 뼈대가 움직이며 모델을 변형시킨다. Multibones는 여러 개의 뼈대를 사용하여 더욱 자연스러운 애니메이션을 만들어낸다. 이를 통해 모델의 각 부분에 대해 다양한 뼈대를 지정할 수 있으며, 더 복잡한 동작을 만들어낼 수 있다. 목차 Get Multibones DirectX 11에서 Multibones는 스켈레탈 애니메이션을 구현하는 데 사용되는 기술이다. 스켈레탈 애니메이션은 3D 모델의 뼈대와 관련된 것으로, 모델이 움직이는 동안 뼈대가 움직이며 모델을 변형시킨다. Multibones는 여러 개의 뼈대를 사용하여 더욱 자연스..
[DirectX11] 070 OBB(Oriented Bounding Box) collision
[DirectX11] 070 OBB(Oriented Bounding Box) collision
2023.03.14DirectX11에서 OBB (Oriented Bounding Box) 충돌 검사는 다른 물체와의 충돌을 감지하는데 사용되는 방법 중 하나이다. 이를 위해 OBB의 충돌 분리 축(the separating axis) 이론이 사용된다. OBB는 충돌 검사를 수행하기 위해 일반적으로 모델의 경계 상자로 사용된다. 이 상자는 일반적으로 물체의 모양에 맞게 회전할 수 있다. 이러한 OBB의 충돌 검사는 OBB의 축을 기준으로 수행된다. 목차 OBB(Oriented Bounding Box) collision Shader Framework Objects Collider.h .cpp UnitTest Objects ObbCollisionDemo.h .cpp 생성 Main.h .cpp OBB 충돌 - 분리축 이론 OBB..
[DirectX11] 069 Collider
[DirectX11] 069 Collider
2023.03.13글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자입니다 목차 Collider Shader Framework Objects Collider.h .cpp UnitTest Objects ObbRaycastDemo.h .cpp 생성 Main.h .cpp Collider Collider.h 더보기 #pragma once struct Ray { Ray() : Position(0, 0, 0), Direction(0, 0, 0) { } Ray(Vector3& position, Vector3& directio..
[DirectX11] 068 Unprojection - 2D 좌표를 3D 좌표로 변환
[DirectX11] 068 Unprojection - 2D 좌표를 3D 좌표로 변환
2023.03.132D 공간을 3D 공간으로 변환한다. 가까운면(근면)부터 거리가 먼면(원면)까지 방향을 구한 다음, 그것을 이어주는 선을 TrytoIntercept에 넣어주면 해당 삼각형의 위치가 나온다. 마우스의 위치를 2D로 변환한 좌표를 활용하여 삼각형을 그려 3D 좌표로 변환한다. 목차 Unprojection - 2D 좌표를 3D 좌표로 변환 Shader Framework Environment Terrain.h .cpp Viewer Viewport.h .cpp UnitTest Terrain GetRaycastDemo.h .cpp 생성 Main.h .cpp Terrain Terrain.h 더보기 #pragma once class Terrain { public: typedef VertexNormal TerrainVe..
[DirectX11] 067 Projection
[DirectX11] 067 Projection
2023.03.09목차 Projection IA -> VS -> RS -> PS -> OM VS (World, View, Projection 조정) RS (vp) NDC 공간 z(깊이)는 0~1인 이유는? (카메라) 뒤쪽은 없다. 고로 음수는 쓸 일이 없다. Perspective 원근 투영: 가까울수록 크고, 멀수록 작다.Orthographic 직교 투영: Projection 과정 = 3D 정점 → W, V, P → 2D Unprojection 과정 = 2D → W, V, P → 3D 정점 Picking이란?마우스 클릭 위치에서 far위치로부터의 거리를 활용하여 Unprojection Shader Framework Viewer Viewport.h .cppUnitTest Projection Pro..
[DirectX11] 066 3D 공간에서 충돌체 선택하기
[DirectX11] 066 3D 공간에서 충돌체 선택하기
2023.03.08글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자를 적어주세요. 글의 요약 설명 부분. 150자입니다 목차 3D 공간에서 충돌체 선택하기 3D 공간에서 충돌체 선택하기 3D 공간을 2D 공간으로 변환 2D 공간을 3D 공간으로 변환 IA → VS → RS → PS → OM IA VS WVP(World, View, Projection) RS Vp(뷰포트 변환) PS OM Viewport Demo Context.h에서 만든 class Viewport* viewport; 사용. ViewportDemo.h 더보기 #pragma once #incl..
[DirectX11] 064~65 Bone 위치에 충돌체 삽입하기
[DirectX11] 064~65 Bone 위치에 충돌체 삽입하기
2023.03.06컴퓨팅 셰이더(Compute Shader)는 그래픽 렌더링에 주로 사용되는 정점 및 픽셀 셰이더와 같은 다른 유형의 셰이더와 달리, Compute Shader는 더 유연하고 다용도적으로 설계되어 있다. 목차 Animation Instancing Shader RawBuffer.fx GetAnimationBone.fx Framework Model ModeAnimator.h .cpp Objects Collider.h .cpp Renders Buffer.h .cpp Render2D.h .cpp UnitTest DirectCompute RawBufferDemo.h .cpp GetAnimationBoneDemo.h .cpp Instancing InstancingFrameworkDemo.h .cpp Main.h .c..