전체 글

컴공과 학부생의 이야기
·Graphics
개요Phong Shading 모델에서는 단순히, R(Reflection)와 L(ight)의 dot product를 이용해서 viewer가 보고 있는 surface의 빛의 강도를 구할 수 있다.Blinn-Phong의 경우, H(Halfway Vector)라는 개념이 추가로 등장한다.본격적으로 소개하기전 Phong 모델의 경우, $Ambient + Diffuse + Specular$ 을 통해 해당 부분의 Color 값을 도출한다. Blinn-Phong에 의해 달라진 점은 $Specular$을 계산하는 부분이다.참고https://web.archive.org/web/20180816064924/http://www.sunandblackcat.com/tipFullView.php?l=eng&topicid=30https..
·D3D11
Texture2D 데이터를 언제 GPU로 옮기는 것일까?Constants Buffer는 ~SetConstantBuffers()함수로 통해서 설정하기만 하면 된다.상수 버퍼는 프로그램 가능 셰이더 단계들에 연결하고 HLSL에 접근하는 버퍼이지만, 그 내용을 자원 뷰가 다르게 해석해야 할 여지는 없다. 따라서, 그대로 노출되는 상수버퍼는 자원 뷰를 사용할 필요가 없다.HLSL 안에서 상수 버퍼는 cbuffer라는 키워드를 이용해서 선언하는 구조체에 대응된다.그렇다면 Texture2D는 어떻게 해야할까?SRV를 통해서 등록해서 사용해야 한다. 그럼 어디서 SRV에 등록해야할까? 해당 코드에서 볼 수 있듯이, 모델을 불러오면서 SRV를 초기화해주는 것을 알 수 있다.if (!meshData.albedoTextu..
·D3D11
왜 물체 이동시 느리게 이동되는거지?$ ViewMat*ProjMat $ 가 되어야 하는데 반대로 곱함으로써 행렬곱의 계산이 엉뚱하게 되어서 그랬던 것이다.이동 원리화면에 마우스 클릭 시 Ray를 발사해서 물체와 닿은 것을 체크해 물체의 이동 거리를 측정하는 방법이다.내가 닿은 지점은 pickPoint = cursorWorldNear + dist * dir이다.특이한 부분이 하나 있는데, Ratio를 구한다는 것이다. prevRatio = dist / (cursorWorldFar - cursorWorldNear).Length()파란색 dist를 구하는 것이 해당 그림의 목표이다. 해당 값을 구해서 이동한 위치를 알아내는 것이다. 해당 식은 비례식을 이용한다.$$ PrevDist : (PrevCursorWo..
Koala Jung
koala-tech-blog