프로그래밍 공부
작성일
2023. 8. 21. 03:18
작성자
WDmil
728x90

 

 

진행중인 작업

UI

3. 핸드, 상점, 전장 UI 생성

 

진행 예정 작업

 

객체

진영 생성시 객체 위치

전투 생성시 객체 위치

 

전투 AI

1. 전투로직

2. 스킬로직

 

그외

투사체

마우스 위치에 따른 카메라 이동

전투시 자동카메라 이동 설정

적 난이도 생성

상점 카드 생성

 

완료된 작업

 

UI

텍스트 출력엔진 생성

텍스트 출력엔진의 외곽선 생성 쉐이더

 

UI

1. 팝업바 생성

2. 상태창 생성

 

버튼 기본 생성

기본 마우스 포인터 연동

캐릭터 사망시 삭제처리 연동

HP 표시 [ HP바 재처리 ]

데미지 연산중복 처리

데미지 연산 ( 객체질량 * 운동량 )

OBB충돌처리

각 객체간 부모자식관계 재처리

객체 공격 딜레이

공격시 오브젝트 회전처리

객체 공격

객체 이동

애니메이션 재생

객체 생성

 

 

텍스트 출력시 hlsl의 이해를 잘 못해서 매우 오랫동안 다시 공부해야했다.

그래도 hlsl을 사용하여 그래픽카드와 cpu간의 buffer 전송을 하는방법을 알 수 있었다.

BMFont의 프로그램이 오래되서, Directx11의 기준, 좌표와 offset이 약간 맞지 않는 큰 버그가 있었으나,

텍스트의 기준사이즈와 offset의 값을 노가다를 통해 찾아내서 보정치를 주었다.

 

영문이 출력된 후 한글이 출력되면 문자가 서로 겹치는 버그또한 발생해서 바로 다음문자가 유니코드상 한글일 경우, 자신의 문자 사이즈의 4배만큼 offset을 주도록 처리하니까 해결되었다.

 

문자의 외곽선은 hlsl을 통해, 텍스트의 color처리 과정에서 동시에 처리하게 만들었다.

hlsl의 쉐이더 처리과정을 그 이후에 처리하려고 했는데, 그런 과정을 거치니까 이유를 모르겠지만 엄청난 랙이 유발되서, 피치못하게 한번에 처리할 수 밖에 없었다.

 

외곽선은 문자의 색상이 어두운쪽이면 흰색 밝은쪽이면 검정색이 나타나게 hlsl에서 처리하였다.

 

외곽선의 두께는, 두께값만큼 for문으로 순환하여, 현재 color의 위치좌표기준 상하좌우 대각선의 위치에 이미지 사이즈 보정값 * 원하는 두께의 굵기 만큼의 위치를 전부 순환하여 검사하고. 만약, 샘플링하여서, uv값이 0.8이상인 pixel이 검사 되었을 경우, 설정된 외곽선 color로 설정하게 만들었다.

 

또한, 색상검사시 찾은 color값이 이미 처리했던 외곽선 color와 같을경우 를 확인해야만 했다.

위 검사를 안넣으면, 모든 이미지가 검정색 또는 흰색으로 덮어씌워져 버린다.

 

어차피 문자의 색이 흰색이면 외곽선은 검정이고 검정이면 외곽선은 흰색이기 때문에 문자색을 흰색으로 못하거나 검정으로 못하거나 하지는 않는다.

 

728x90