다음은 Geometry shader를 이용한 방법이다 법선 방향으로의 확대 및 뒷면 그리기가 아닌 다각형 가장자리에 윤곽선을 붙일 지 여부 판정 에지 (가장자리)을 따라 라인을 그립니다 http://zerogram.info/?p=941 Deferred Rendering (UE4) 기반에 대해 몇몇 실험이 아래 링크에 나와있다. http://rarihoma.xvs.jp/2015/02/22/1/#worldnormal- 단일 객체에 대한 depth map, noraml map, color map 을 sobel filter 링 후 결합 http://replay.unrealsummit.co.kr/data/usmp2016/pre002.pdf 개괄적 설명이 있는데, Epic Games Japan 의 Jun 이 제안했..
Forward pass 가 너무 많이 잡아먹기에, 투명이 없는 배경 모델을 찾아서 바꾸고, DirectXTex가 PNG 읽을 때 강제로 32 BIT RGBA로 컨버팅 하기에 차라리 BGRX로 읽도록 바꿨다. 이전에 BGRX의 경우 alpha가 없는 걸로 처리하도록 했기에 뒷단은 알아서 된다. 내부적으로 WinCodec 쪽을 사용하기에 멀 할수가 없다. FreeImage를 사용한 INFOMSPGMT 의 경우는 아래와 같이 처리한다. // Check to see if the texture has an alpha channel. m_bIsTransparent = ( FreeImage_IsTransparent( dib ) == TRUE ); Position 을 Depth 부터 reconstruction 하게 바..
이전에는 사진에서 쓰이는 톤매핑 구현하다(했다가 그만 뒀는데) 치웠는데 검색어를 바꾸니 더 나오네; https://www.slideshare.net/youpyo/hdr-8480350 https://www.slideshare.net/cagetu/ndc11-hdr 40 페이지 부터 언급이 되어있다. 42 페이지 Reinhard 가 나온다. 그 다음이야기가 아래에서 이어진다. http://egloos.zum.com/cagetu/v/6198009 우선 이걸 기반으로 ModelViewer를 해석해보자. ToneMappingUtility.hlsli 에서 float3 TM_Reinhard(float3 hdr, float k = 1.0) { return hdr / (hdr + k); } // The next gener..
관련 글은 Game programming gem 2권에 존재한다. http://www.gpgstudy.com/gpg2/gpg2s5-1draft.html 몇몇 방법은 너무 오래되었다. 물론 거기서 normal 확장 방법을 설명하는데 그건 아직 현역이다. 그냥 단순히 구현한다면, float3 pos = input.position + input.normal * EdgeSize * 0.01; matrix clipToProj = mul(projection, mul(view, model)); return mul(clipToProj, float4(pos, 1.0)); 아래와 같이 가까워지면 굵어지는 문제 존재한다 굵기를 고정시키려면, 카메라와의 거리를 고려해야한다. 아래 방법은 대충 비례식이 맞는거 같은데 y/pos..
이까지 오는데 너무 많이 걸렸는데, 여기서 또 Pixel Query를 하네 Deferred context랑 안맞기도 한데 그냥 context로 해도 stall 이 있는듯. https://www.3dgep.com/forward-plus/ 에서는 이전 프레임 (또는 이전 2 프레임)의 쿼리 결과가 시간적 일관성 이론 [15] 에 의존하는 현재 프레임의 쿼리 결과 대신 사용되는 경우 실속을 피할 수 있습니다 . 이렇게하면 여러 광원에 대해 여러 쿼리 개체를 만들어야하기 때문에 쿼리 개체를 여러 프레임에 걸쳐 유지해야하는 경우 다시 쿼리 개체를 사용할 수 없기 때문에 이러한 쿼리 개체를 다시 사용할 수 없습니다. 또, 다시 Query pool 을 만들어야하나. 만들어도 저 시간적 일관성이 어떻게 얻어지는거지; ..
http://zerogram.info/?p=1613 에 기반하여 실험을 진행하고 있다.
쓰면 적게쓰고, 안쓰는게 정신 건강에 좋다 좋은 튜토리얼 https://medium.com/@alinakipoglu/parsing-with-spirit-qi-fcaeaf4357b3 하지만, 쓰다보면 boost tutorial 다 읽고 부족해서 구글 검색하면서 왜 안되는가 고민하는 시간이 늘어간다. https://github.com/newpolaris/Parser/blob/master/Boost.Sprit/Boost.Sprit/mqo.cpp spirit 으로 억지로 해봤는데, lexer 붙이는 순간 컴파일 에러 너무 많이 나기 시작해서 지지치고 위와 같은 형태로 갔다. string iterator 를 끊어서 재 사용가능한건 좋은데, 컴파일 타임이 분단위임. 이게, 한줄 잘못하면 알지도 못하는 에러를 몇페이..
샘플의 bunny를 보고 적용하려고 하면 스트레스 받을 부분이 많다. 파라메터에 영향을 많이 받는다. 우선 kVC를 0으로 둔다면, 떨어지고 분리는 된다. 안떨어지게 하려면 어떻게 해야하는가? http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=7070 // psb->m_cfg.kVC = 0.000; // psb->m_cfg.kDF = 0.5; // psb->m_cfg.kMT = 0.1; psb->m_cfg.kVC = 0.001; // psb->m_cfg.kDF = 0.5; // psb->m_cfg.kMT = 0.1; psb->m_cfg.kMT = 0.1; psb->setPose( false, true ); 아래 링크에서 약간 설명은 되어있다. http://..
reduction 이라고도 불리고, decimation 이라고도 불린다. 우선 이게 필요한 이유는, PMD 기본 vertex가 3만개 가량인데 bullet 으로는 soft body를 돌릴 수가 없다. 예전에는 crash가 났다고 하는데 지금 버전에서는 너무느리다. 결국 줄인 것으로 시뮬레이션 해서 그걸 원래 mesh 에 반영해야한다. 반영을 위해 skinning 과 비슷하게 가상이든 진짜든 bone 을 도입하여 weight를 준다고 한다. 그때문에 decimation 방법을 조사해봤는데 이걸로 LOD 도 구현하고 그림자 전용 mesh도 만들고 한다고 한다. 이걸 실시간을 하면 귀찮으니까 전처리 단계에서 최적화도 하고 에러도 수정하는 단계를 밟는다. 소스 공개 된 soft 중에 Skeleton mesh 즉..
- Total
- Today
- Yesterday