엔진 그림자 개선

일전에 일기장에 투덜댄 바, 그림자를 개선하고 있다. nVidia의 LiPSM샘플을 참고하여 일단 대충 구현은 했다. 원리가 이해되지 않아서 몇 일간 출퇴근시, 자기 직전, 운동할때, 열심히 생각을 해서 기본적인 원리는 이해했다고 판단. 코딩은 반나절 걸려서 끝냈다. 내가 확실하게 이해를 못해서 그런지, 퀄리티가 아주 맘에 드는건 아니다. 좀 더 개선을 해야하고 코드도 정리해야한다. 이 짓을 시작한 이유는 씬 … More 엔진 그림자 개선

설 연휴 작업 내용

금요일 로켓탄의 궤적을 캡슐로 하여 캐릭터 타원체와 충돌처리. 필요한 검색 코드 및 수학함수 추가 토요일 npc서버를 릴리즈로 빌드하다 오작동. 코드를 샅샅이 뒤졌으니 문제 발견 못함. 디스어셈블된 코드를 살펴보고 컴파일러가 옵셋을 잘못 계산했음을 발견. 프리컴파일드 헤더 다시 세팅하고 최적화 옵션 바꾸고 어쩌고 하다보니, 어느 순간 제대로 된다.–; 현재 풀 옵티마이즈 상태로 제대로 작동. 일요일 서버에서 로켓탄환 … More 설 연휴 작업 내용

피직 트랜스폼(캐릭터 스키닝) 64비트 SSE버젼 코드

소스코드 ———————————————————————————————————————————————— <physiq_transform_x64.asm> ———————————————————————————————————————————————— INCLUDE math_type_x64.inc .code ;void __stdcall PhysiqueTransformPosAndNormalAndUV(BYTE* pVertexResult,PHYSIQUE_VERTEX* pPhyVertex,DWORD dwVertexNum,DWORD dwSize,MATRIX4* pMatrixEntry) PhysiqueTransformPosAndNormalAndUV PROC pVertexResult:QWORD , pPhyVertex:QWORD , dwVertexNum:QWORD , dwSize:QWORD , pMatrixEntry:QWORD local   v3Normal : VECTOR4 local   v3Tangent : VECTOR4 ; backup xmm6 sub   rsp,32 movups  [rsp+0],xmm6 movups  [rsp+16],xmm7 mov    qword ptr[rbp+16],rcx mov    qword ptr[rbp+24],rdx mov    qword ptr[rbp+32],r8 mov    qword ptr[rbp+40],r9  mov   rcx,dwVertexNum or   rcx,rcx jz   lb_return  mov   r10,pPhyVertex mov   r8,pVertexResult; pVertexResult lb_loop_physique_num: xorps  xmm3,xmm3     ; v3Result movups  v3Normal,xmm3    ; v3Normal movups  v3Tangent,xmm3    ; v3Tangent … More 피직 트랜스폼(캐릭터 스키닝) 64비트 SSE버젼 코드

추석 연휴 작업 내용

금요일 (연휴 전날) 트리거 렌더링 코드 디버깅 -> 정상 작동 맵툴에서 퍼포몬스 체크용 폰트 화면 가장자리로 밀림 -> 정상작동 최근에 버텍스 버퍼 락을 완전히 없애고 쉐이더 기반으로 바꾸면서 생긴 버그들. 어쨌든 다 잡았다. (토요일) 현재의 툰 쉐이딩에 깔끔한 외곽선을 넣어보고자 이리저리 시도. 먼저번에 이미지 프로세싱 기반으로 시도했다가 영 지저분하게 나와서 , 이번엔 노말벡터랑 시선 벡터 … More 추석 연휴 작업 내용

BSP/PORTAL적용 결과

본점(http://yuchi.net)에 올린 글입니다. 게이버 따위에 자료를 올려줘야 할 가치가 있는진 좀 의문이긴 하지만 일단 올려봅니다. 제 홈피에서도 몇번인가 언급한적이 있고 KGC2006때 발표했었던 주제입니다. 툴을 이용해서 ROOM을 모델링하고 PORTAL을 자동생성, 공간 구분은 BSP를 이용하는 기술이죠. 그 동안 아이디어를 실제 프로젝트에 적용하는데 꽤 시간과 노력을 들였고, 이젠 안정화 단계에 접어들었다고 생각합니다. 해서 홈피 놀러오시는 분들에게 서비스 차원으로 … More BSP/PORTAL적용 결과

새로운 툴 추가 MTControl

아이템샵 기능을 만들어넣다가 이래저래 하다 보니 아무래도 툴이 필요했다. 하는 김에 모델뷰에다가 어거지로 때려넣었던 클래스 프로퍼티, 무기 프로퍼티, 방어구 프로퍼티 툴까지 몽땅 통합했으면 좋겠다는 생각이 들었다. 해서 후닥닥 만들었다. 몸만 안아팠으면 2일이면 됐을것을. 금요일 작업하고 월요일 골골대고 화요일까지 작업해서 대충의 프레임을 잡고 아이텝샵 생성 기능을 만들어 넣었다. 이 와중에 DB에도 테이블 두개 추가. 이름하여 MTControl. … More 새로운 툴 추가 MTControl

멀티플 클라이언트 제작

  mmorpg프로젝트다보니 이래저래 작업을 하다보면 클라이언트를 몇개씩 띄워야할 때가 많다. 메모리를 100메가가 넘게 쳐먹는 클라이언트를 여러 개 띄우려면 꽤나 짜증이 난다. 일단 옆에 둔 노트북이 큰 도움이 되긴 하지만서도. 로딩시간도 그렇고 화면이 계속 갱신되는데다, 마우스랑 키보드 컨트롤 게임이다보니 디버깅 하려고 콘솔을 조작하면 게임 상태도 계속 영향을 받는다. 해서 한 프로세스로 여러 개의 클라이언트를 시뮬레이션 해주는 … More 멀티플 클라이언트 제작

몬스터가 나를 때린다

유져가 접속해있는 에이전트 서버, 게임 컨트롤 서버, NPC 서버가 따로 존재하다보니 NPC입장에서 유져를 탐색하고 공격하고 그에 대한 판정을 하는게 쉽지는 않았다. 여기서 NPC란 대체로 몬스터를 칭하지만  그외 플레이 하지 않는 모든 캐릭터를 말한다. 하여간 대단히 복잡한 구조를 구상하고 코딩하다가, 삽질임을 깨닫고 좀 간단한 방법으로 코드를 다시 짰다. 삽질임을 빨리 깨달아서 다행이다. 일주일을 예상했지만 생각보다 빨리 끝냈다. … More 몬스터가 나를 때린다

비디오 텍스쳐

2004년도에 졸업논문의 주제로 선택한 것은 ‘d3d와 픽셀 쉐이더를 이용한 실시간 포스트 이펙팅’ 이였다. 쉽게 요약하자면 1.동영상 플레이어다. 2.픽셀쉐이더를 이용해서 실시간으로 이펙트를 먹여준다 3.샤픈,모션블러,흑백,연필화느낌 필터…등등등 따위의 필터가 가능하다 하여간 그때 일도 바빴고 급하게 준비하느라 무지 고생했던 기억이 난다. 우선 dshow를 이용해서 4DyuchiGXMedia.dll컴포넌트를 만들었다. 이 녀석을 엔진의 렌더러와 연결했다. 이 DLL을 사용하여 엔진에서 avi텍스쳐를 생성할 수 있도록 … More 비디오 텍스쳐

개밥먹기

발렌타인데이 PT를 마치고서 저는 팀원들 모두가 접속하는 테스트를 정기적으로 해야겠다고 생각했습니다. 원래는 3월부터 2주 간격으로 실시할 예정이었습니다만, 하루라도 빨리 시작하는 편이 좋겠다 싶더군요. 2주 간격도 너무 깁니다. 일주일 간격으로 테스트하기로 했습니다. 그리고 오늘이 그 첫 테스트 날이었습니다. 얼마전 PT를 끝내고 코드를 왕창 고쳤습니다. 칼 공격 처리를 하다보니 이전 코드는 좀 문제가 있더군요. 내용상으론 사소한 문제였지만 … More 개밥먹기