sailorCat

전체 글 250

카테고리 설명
😘
카테고리
작성일
2021. 8. 8. 14:36
작성자
sailorCat
728x90

https://www.microsoft.com/ko-KR/download/details.aspx?id=6812 

 

Download DirectX SDK from Official Microsoft Download Center

중요! 아래에서 언어를 선택하면 전체 페이지 내용이 해당 언어로 신속하게 변경됩니다. 네덜란드어독일어러시아어스웨덴어스페인어영어이탈리아어일본어중국어(간체)중국어(번체)체코어포

www.microsoft.com

 DirectX의 이전 버전들을 통해 샘플을 제공하고 공부할 수 있게 해놓은 브라우저

 

다운로드 받고 Direct Sample Browser를 실행시키면

여기서 Tutorial 02 Rendering Triangle의 Install Project를 누르고

프로젝트를 실행시킨다.

09-10 년도에 나온 프로그램 이기 때문에 현재의 SDK로 업데이트 하는지 여부가 Visual Studio 에 나오면 OK누른다.

형광펜 친 부분이 Win32로 되어있다면 자신의 컴퓨터에 맞게 변경해 준다.

나는 x64

실행하면 옐로우 삼각형이 나온다.

 

프로젝트를 Install하는 옆 칸에 document라고 나와 있는데

클릭하면

rendering triangle과 관련된 자료가 나온다.

소스 분석과 이 자료를 통해 충분히 공부 할 수 있다.

 

Vertices라고 불리는 세가지 포인트 꼭짓점을 좌표로 (0, 0) (0, 1) (1, 0)  GPU에 프로그래머가 넘겨야 한다.

그럼 이 직각 삼각형을 GPU가 가진 정보로 렌더링 하여 옐로우 삼각형이자 좌우대칭 귀여운 삼각형으로 만들어준다.

 

Vertex는 위치, 정상형인지, 컬러, 텍스쳐 등등 많은 정보를 포함한다.

Vertex Layout은 이런 정보들이 메모리에 어떤 상태로 존재하는지 정의하는데, 이거는 어디 쓰이고 저거는 어디 쓰이는지에 관련된 것들을 정의해주며, 각각의 정보들의 사이즈와 순서도 정의한다.

각각의 attribute들이 저마다의 type을 가졌기 때문이다.

 

XMFLOAT3라는 단일 필드에서의 삼각형을 찍는다.

vertex info를 담는 필드

하지만 각각의 attribute들의 정확한 정의를 담은 Vertex Layout이 필요하고 버퍼에서 Input을 받아서 Input Layout으로 적용되어야 한다.

D3D11_INPUT_ELEMENT_DESC로 각각의 attribute를 정의할 수 있다.

모든 Vertex attribute는 하나 이상의 배열의 D3D11_INPUT_ELEMENT_DESC로 정의된다.

이 배열들을 Input Layout 오브젝트를 만드는데 사용한다.

 

D3D11.h 에 있다.

 

SemanticName
요소의 특징이나 특성을 반영하는 String 식별자
SemanticIndex
하나의 attribute에 여러 요소가 있을 수 있다. color0, color1과 같이 넘버를 붙인다.
Format
요소의 data Type을 정의한다
DXGI_FORMAT_R32G32B32_FLOAT는 세개의 32 비트의 floating point number로 되어 12 바이트의 long이 된다.
DXGI_FORMAT_R16G16B16A16_UNIT은 네개의 16 비트의 unsigned integer로 되어있고 8 바이트의 long이 된다.
InputSlot
Vertex 자료를 Vertex Buffer를 사용하여 GPU에 넘길 때, 여러개의 Buffer가 동시에 존재할 수 있다. 

모든 Buffer는 InputSlot number(0-15)를 붙이게 된다.
현재 요소에 어떤 Vertex Buffer를 사용해야 하는지 GPU가 알게 된다.
AlignedByteOffset
Vertex가 Buffer에 저장될 때는 메모리 덩어리로 저장된다.
AlignedByteOffset은 GPU가 fetch를 시작할 메모리의 주소를 알려준다.
InputSlotClass
거의 D3D11_INPUT_PER_VERTEX_DATA로 되어있다.
풀과 같은 동일한 물체들을 한번에 렌더링 하는 Instancing을 할 때는 D3D11_INPUT_PER_INSTANCE_DATA 를 쓴다.
InstanceDataStepRate
Instancing을 할 때 쓰인다.
하지 않으면 0으로 세팅한다.

 

 

.cpp 에 있는 input

 

 

728x90
카테고리
작성일
2021. 8. 7. 00:20
작성자
sailorCat
728x90

 

 

 

 

 

 

 

참고자료

https://docs.microsoft.com/en-us/windows/win32/direct3d12/creating-a-basic-direct3d-12-component

 

Creating a basic Direct3D 12 component - Win32 apps

This topic describes the call flow to create a basic Direct3D 12 component.

docs.microsoft.com

 

728x90
카테고리
작성일
2021. 8. 5. 12:24
작성자
sailorCat
728x90

DirectX12 를 설치하는 방법은 간단하다.

visual studio 2019를 깔았을 때 directx에 관련된 항목은 개발도구로 선택을 안해서 workload에서 새로 다운 받아야 하는 상황이었다.

새 프로젝트 만들기 창에서 C++, 모든플랫폼, 게임에서 directx 프로젝트 템플릿이 나오지 않았다.

이것과 관련된 오류는 한국 블로그나 사이트에서 찾을 수 없어서 정리한다.

 

directx를 찾을 수 없다

마이크로 소프트 블로그에서 발견했다.

https://devblogs.microsoft.com/cppblog/directx-game-development-with-c-in-visual-studio/

 

DirectX game development with C++ in Visual Studio

Leverage the full power of C++ to build high-end games powered by DirectX to run on a variety of devices in the Windows family, including desktops, tablets, and phones. In this blog post we will dive into DirectX development with C++ in Visual Studio.

devblogs.microsoft.com

 

 

1. 우선 다운로드 할 항목을 보기 위해 수정을 누른다.

 

 

2. C++를 사용한 게임개발의 설치 세부정보

- C++ 프로파일링 도구

- Windows 10 SDK

두 가지를 필수로 선택한다

 

 

3. 유니버셜 Windows 플랫폼 개발 설치 세부정보

- C++ 유니버셜 Windows 플랫폼 도구 

- DirectX용 그래픽 디버거 및 GPU 프로파일러

두 가지를 필수로 선택한다.

 

 

이렇게 수정 완료 하면 새 프로젝트 만들기를 열고 

게임 항목을 찾으면 DirectX 프로젝트 템플릿이 나온다.

 

directx 12 템플릿 기본 실행시 나오는 화면이다.

모두 성공하시길

728x90
카테고리
작성일
2021. 8. 4. 14:28
작성자
sailorCat
728x90

Component Object Model은 DirectZ의 프로그래밍 언어 독립성, 하위 호환성을 보장한다.

C++ 클래스로 간주하고 사용 가능

 

COM 객체는 COM 인터페이스라고도 불린다.

User가 COM 내부의 내용을 알 수 없고, COM 객체를 가리키는 포인터나 인터페이스의 메소드를 통해 알 수 있다.

 

new와 delete를 이용하여 생성 및 삭제가 불가능 하며, 반드시 생성을 위한 별도의 API 함수를 써야 한다.

모든 COM 인터페이스는 IUnKnown 기능을 상속하는데 여기서 Release라는 메소드가 제공된다.

 

 

728x90
카테고리
작성일
2021. 8. 4. 04:18
작성자
sailorCat
728x90

목차를 퍼왔다

이 순서대로 공부하면 될 거 같다.

 

PART I 기초 필수 수학

1장 벡터 대수
1.1 벡터
1.2 길이와 단위벡터
1.3 내적
1.4 외적
1.5 점
1.6 DirectXMath 라이브러리의 벡터
1.7 요약
1.8 연습문제

2장 행렬 대수
2.1 정의
2.2 행렬 곱셈
2.3 전치행렬
2.4 단위행렬
2.5 행렬식
2.6 딸림행렬
2.7 역행렬
2.8 DirectXMath의 행렬
2.9 요약
2.10 연습문제

3장 변환
3.1 선형변환
3.2 아핀변환
3.3 변환들의 합성
3.4 좌표 변경 변환
3.5 변환 행렬 대 좌표 변경 행렬
3.6 DirectXMath 라이브러리의 변환 관련 함수들
3.7 요약
3.8 연습문제

PART II Direct3D의 기초

4장 Direct3D의 초기화
4.1 기본 지식
4.2 CPU와 GPU의 상호작용
4.3 Direct3D의 초기화
4.4 시간 측정과 애니메이션
4.5 예제 응용 프로그램 프레임워크
4.6 Direct3D 응용 프로그램의 디버깅
4.7 요약

5장 렌더링 파이프라인
5.1 3차원의 환상
5.2 모형의 표현
5.3 컴퓨터 색상의 기본 개념
5.4 렌더링 파이프라인의 개요
5.5 입력 조립기 단계
5.6 정점 셰이더 단계
5.7 테셀레이션 단계들
5.8 기하 셰이더 단계
5.9 절단
5.10 래스터화 단계
5.11 픽셀 셰이더 단계
5.12 출력 병합기 단계
5.13 요약
5.14 연습문제

6장 Direct3D의 그리기 연산
6.1 정점과 입력 배치
6.2 정점 버퍼
6.3 색인과 색인 버퍼
6.4 예제 정점 셰이더
6.5 예제 픽셀 셰이더
6.6 상수 버퍼
6.7 셰이더의 컴파일
6.8 래스터화기 상태
6.9 파이프라인 상태 객체
6.10 기하구조 보조 구조체
6.11 상자 예제
6.12 요약
6.13 연습문제

7장 Direct3D의 그리기 연산 제2부
7.1 프레임 자원
7.2 렌더 항목
7.3 패스별 상수 버퍼
7.4 도형 기하구조
7.5 도형 예제
7.6 루트 서명 추가 설명
7.7 지형과 파도 예제
7.8 요약
7.9 연습문제

8장 조명
8.1 빛과 재질의 상호작용
8.2 법선 벡터
8.3 조명의 주요 벡터
8.4 람베르트 코사인 법칙
8.5 분산 조명
8.6 주변 조명
8.7 반영 조명
8.8 조명 모형 정리
8.9 재질의 구현
8.10 평행광
8.11 점광
8.12 점적광
8.13 조명 구현
8.14 파도 조명 예제
8.15 요약
8.16 연습문제

9장 텍스처 적용
9.1 텍스처와 자원의 개괄
9.2 텍스처 좌표
9.3 텍스처 자료 원본
9.4 텍스처 생성 및 활성화
9.5 필터
9.6 텍스처 좌표 지정 모드
9.7 표본추출기 객체
9.8 셰이더에서 텍스처 표본 추출
9.9 나무 상자 예제
9.10 텍스처 변환
9.11 텍스처 입힌 언덕과 파도 예제
9.12 요약
9.13 연습문제

10장 혼합
10.1 혼합 공식
10.2 혼합 연산
10.3 혼합 계수
10.4 혼합 상태
10.5 예제
10.6 알파 채널
10.7 픽셀 잘라내기
10.8 안개
10.9 요약
10.10 연습문제

11장 스텐실 적용
11.1 깊이·스텐실 버퍼의 자료 형식과 버퍼 지우기
11.2 스텐실 판정
11.3 깊이·스텐실 상태의 서술
11.4 평면거울 구현
11.5 평면 그림자의 구현
11.6 요약
11.7 연습문제

12장 기하 셰이더
12.1 기하 셰이더 프로그래밍
12.2 나무 빌보드 예제
12.3 텍스처 배열
12.4 알파-포괄도 변환
12.5 요약
12.6 연습문제

13장 계산 셰이더
13.1 스레드와 스레드 그룹
13.2 간단한 계산 셰이더 예제
13.3 자료 입력 자원과 출력 자원
13.4 스레드 식별 시스템 값
13.5 추가 버퍼와 소비 버퍼
13.6 공유 메모리와 동기화
13.7 흐리기 예제
13.8 더 읽을거리
13.9 요약
13.10 연습문제

14장 테셀레이션 단계들
14.1 테셀레이션 기본도형 위상구조
14.2 덮개 셰이더
14.3 테셀레이터 단계
14.4 영역 셰이더
14.5 사각형 하나의 테셀레이션
14.6 삼차 베지에 사각형 패치
14.7 요약
14.8 연습문제

PART III 응용

15장 1인칭 카메라 구축과 동적 색인화
15.1 시야 변환 개괄
15.2 카메라를 대표하는 Camera 클래스
15.3 주요 메서드 구현
15.4 카메라 예제 해설
15.5 동적 색인화
15.6 요약
15.7 연습문제

16장 인스턴싱과 절두체 선별
16.1 하드웨어 인스턴싱
16.2 경계입체와 절두체
16.3 절두체 선별
16.4 요약
16.5 연습문제

17장 3차원 물체의 선택
17.1 화면에서 투영 창으로의 변환
17.2 세계 공간과 국소 공간의 선택 반직선
17.3 반직선 대 메시 교차 판정
17.4 예제 응용 프로그램
17.5 요약
17.6 연습문제

18장 입방체 매핑
18.1 입방체 매핑
18.2 환경 매핑
18.3 하늘에 텍스처 입히기
18.4 물체의 주변 환경 반사
18.5 동적 입방체 맵
18.6 기하 셰이더를 이용한 동적 입방체 매핑
18.7 요약
18.8 연습문제

19장 법선 매핑
19.1 동기
19.2 법선 맵
19.3 텍스처 공간 또는 접공간
19.4 정점 접공간
19.5 접공간과 물체 공간 사이의 변환
19.6 법선 매핑 셰이더 코드
19.7 요약
19.8 연습문제

20장 그림자 매핑
20.1 장면 깊이의 렌더링
20.2 직교투영
20.3 투영 텍스처 좌표
20.4 그림자 매핑
20.5 큰 PCF 핵
20.6 요약
20.7 연습문제

21장 주변광 차폐
21.1 반직선 투사를 통한 주변광 차폐
21.2 화면 공간 주변광 차폐(SSAO)
21.3 요약
21.4 연습문제

22장 사원수
22.1 복소수 개괄
22.2 사원수 대수학
22.3 단위 사원수와 회전
22.4 사원수 보간
22.5 DirectXMath 라이브러리의 사원수 함수들
22.6 사원수 회전 예제
22.7 요약
22.8 연습문제

23장 캐릭터 애니메이션
23.1 뼈대 좌표계들의 계통구조
23.2 메시 스키닝
23.3 정점 혼합
23.4 파일에서 애니메이션 자료 적재
23.5 캐릭터 애니메이션 예제
23.6 요약
23.7 연습문제

부록 A Windows 프로그래밍 입문
A.1 개요
A.2 기본적인 Windows 응용 프로그램
A.3 기본 Windows 응용 프로그램 설명
A.4 더 나은 메시지 루프
A.5 요약
A.6 연습문제

부록 B HLSL 레퍼런스
B.1 변수 형식
B.2 키워드와 연산자
B.3 프로그램의 흐름
B.4 함수

728x90
카테고리
작성일
2021. 7. 17. 00:20
작성자
sailorCat
728x90

Git에 자신의 Repository를 만들고, PC에 Git을 다운로드 하면 폴더를 우클릭 했을 때

Git Bash가 나온다

클릭한다

우클릭한 폴더 내의 파일들을 Git Repository 원격 저장소에 업로드 해준다

$ git init

로컬 저장소를 만들고 초기화

$ git status

업로드 될 파일(폴더 내의 파일) 확인, 업로드 되면 초록색으로 변한다

$ git add .

모든 파일 업로드

$ git add 파일, 폴더명 .

특정 파일, 폴더 업로드

$ git commit -m "메시지"

원하는 메시지를 업로드한다 

steganography 라고 올렸다

 

$ git remote add origin repository 주소

$ git remote -v

로컬 저장소가 원격 저장소로 연결

깃 주소를 자신의 것과 연결

 

$git push origin master

commit했던 파일을 원격 저장소에 업로드.

 

 

728x90

'Git' 카테고리의 다른 글

Git branch에 원격 폴더가 안보이고 main만 보일때  (0) 2022.04.18
Git branch 삭제 fetch  (0) 2022.03.05
GitHub Branch로 파일 업로드, Pull Request  (0) 2021.12.21
Git clone 레포지토리 복제  (0) 2021.12.21
Git Branch  (0) 2021.12.21
카테고리
작성일
2021. 7. 15. 20:18
작성자
sailorCat
728x90

전치 transposing, 인덱싱, 슬라이싱, 수식, 선형대수, 임의 샘플링 등의 연산을 할 수 있다.

https://pytorch.org/docs/stable/torch.html

 

torch — PyTorch 1.9.0 documentation

Shortcuts

pytorch.org

Tensor연산 레퍼런스를 볼 수 있다.

 

텐서의 연산은 CPU보다 GPU가 빠르기 때문에 Edit->Notebook settings에서 GPU로 명시적으로 이동할 수 있다.

IPU(Intelligence Processing Unit)이 개발되며 IPU로 연산하는 경우도 있다.

 

GPU로 할당

 

cpu->cuda

디바이스를 cuda로 할당하였다.

 

Numpy와 비슷하다.

Tensor 합치기

cat과 stack

DATASET 

데이터 샘플을 처리하는 코드는 가독성과 모듈성이 중요하다.

데이터셋 코드를 모델 학습 코드로부터 분리하는 것이 중요하다.

torch.utils.data.DataLoader

torch.utils.data.Dataset

두가지 데이터 기본요소로 활용한다.

 

dataset - 샘플과 label을 저장

dataLoader - 샘플이 Dataset에 쉽게 접근할 수 있도록 반복 가능한 iterable 객체로 감싼다.

https://pytorch.org/vision/stable/datasets.html

 

torchvision.datasets — Torchvision 0.10.0 documentation

torchvision.datasets All datasets are subclasses of torch.utils.data.Dataset i.e, they have __getitem__ and __len__ methods implemented. Hence, they can all be passed to a torch.utils.data.DataLoader which can load multiple samples in parallel using torch.

pytorch.org

 

 

https://pytorch.org/text/stable/datasets.html

 

torchtext.datasets — torchtext 0.10.0 documentation

Shortcuts

pytorch.org

https://pytorch.org/audio/stable/datasets.html

 

torchaudio.datasets — Torchaudio 0.9.0 documentation

torchaudio.datasets All datasets are subclasses of torch.utils.data.Dataset and have __getitem__ and __len__ methods implemented. Hence, they can all be passed to a torch.utils.data.DataLoader which can load multiple samples parallelly using torch.multipro

pytorch.org

 

DATASET 불러오기

TorchVision에 Fashion-MNIST 데이터 셋을 불러오는 연습

학습예제, 테스트예제로 이루어져 있음

 

  • root - 학습, 테스트 데이터를 저장하는 경로
  • train - 학습용, 테스트용 데이터셋 여부를 정함
  • download=True - 데이터가 없는 경우 인터넷에서 다운로드
  • transform target_transform - feature, label, transform을 지정

트레이닝 데이터로 데이터셋을 불러오고 train=True로 불러온다

테스트 데이터로 데이터셋을 불러오고 train=False로 불러온다

Fashion_MNIST에 관련된 자료들이 인터넷에서 다운로드 된다.

이 자료로 학습할 수 있다.

 

Dataset에 리스트처럼 index로 직접 접근할 수 있다.

training_data[index].matplotlib을 사용하여 학습 데이터를 시각화해본다.

spyder의 plot창에 여러 종류의 의상들이 보인다.

 

 

728x90

'인공지능 AI' 카테고리의 다른 글

PyTorch 기본  (0) 2021.07.12
인공지능 WEKA 문서 자동 분류 학습  (0) 2021.04.12
인공지능에서 했던 IDA* 미로찾기  (0) 2021.04.12
카테고리
작성일
2021. 7. 12. 15:30
작성자
sailorCat
728x90

 

PyTorch 설치

 

https://pytorch.org/get-started/locally/#anaconda

 

PyTorch

An open source machine learning framework that accelerates the path from research prototyping to production deployment.

pytorch.org

자신이 가지고 있는 조건을 확인하고 적절히 선택해서 설치한다.

Anaconda3는 파이썬 보안 프로젝트를 하면서 사용한 적이 있다.

Cuda를 추가로 설치하고, 명령어를 Anaconda Prompt에서 실행하면 PyTorch의 패키지들이 설치된다.

 

설치에 관련된 자세한 내용은 이 블로그에서 참고했다.

https://blog.daum.net/geoscience/1565

 

PyTorch: PyTorch(파이토치) 설치하기

안녕하세요? 이번 글은 PyTorch(파이토치) 설치 과정을 정리해 보겠습니다. PyTorch는 공식 홈페이지는 다음과 같습니다: pytorch.org/ PyTorch An open source deep learning platform that provides a seamless..

blog.daum.net

 

설치된 환경
설치하다 에러발생

Connection broken: ConnectionResetError(10054, '현재 연결은 원격 호스트에 의해 강제로 끊겼습니다'. None, 10054, None)

네트워크 문제로 두 세번 패키지의 Pytorch만 설치가 안되다가 

다음날 다시 시도해보니 설치 되었다.

설치완료

 

 

 

TENSOR의 기초

  • 텐서 Tensor -배열과 행렬과 유사한 특수한 자료구조
  • 텐서를 사용하여 모델의 Input, Output, 모델의 매개변수들을 부호화(Encode) 
  • GPU나 다른 하드웨어 가속기에서 실행가능
  • import numpy의 ndarray와 유사하며 동일한 내부 메모리를 공유 가능해 데이터를 복사하지 않아도 된다.
  • 자동미분 automatic differentiation에 최적화
  • import torch 

Tensor 초기화

import 해준다

데이터로부터 직접 생성

NumPy 배열로부터 생성

다른 텐서로부터 생성

에러발생

RuntimeError: "check_uniform_bounds" not implemented for 'Long'

간단한 타입에러다.

rand로 만들면 dtype=torch.float로 x_data와 같은 타입을 정해주고 나서 x_data의 형식을 받아와야 한다.

결과

Random 값 또는 상수 값 사용

shape - 텐서의 차원(dimension)을 나타내는 튜플

텐서는 보통 CPU나 GPU에 저장

 

Tensor의 속성

  • shape - 모양, 차원
  • dtype - 자료형
  • device -  저장되는 장치 

 

728x90

'인공지능 AI' 카테고리의 다른 글

Tensor 연산 Operation  (0) 2021.07.15
인공지능 WEKA 문서 자동 분류 학습  (0) 2021.04.12
인공지능에서 했던 IDA* 미로찾기  (0) 2021.04.12