85_snow.fx 쉐이더 코드내에서
VertexOutput VS(VertexInput input)
{
VertexOutput output;
float3 displace = Velocity * Time;
input.Position.y = Origin.y + Extent.y - (input.Position.y - displace.y) % Extent.y;
input.Position.x += cos(Time - input.Random.x) * Turblence;
input.Position.z += cos(Time - input.Random.y) * Turblence;
input.Position.xyz = Origin + (Extent + (input.Position.xyz + displace) % Extent) % Extent - (Extent * 0.5f);
이렇게 구현되는데
input.Position.y = Origin.y + Extent.y - (input.Position.y - displace.y) % Extent.y;
위 부분이
input.Position.xyz = Origin + (Extent + (input.Position.xyz + displace) % Extent) % Extent - (Extent * 0.5f);
이 라인해서 계산해주는 부분때문에 결과에 반영이 안되지 않나 해서 문의 드립니다. 저 y요소만 따로 구하는이유를 제가 정확히 이해를 못한 부분도 있는데 혹시 그 부분을 다시 설명해주실 수 있으실까요? 감사합니다.
안녕하세요 게임클래스 입니다.
현재 담당 교수님이신 '박문수 교수님'께 해당 질문에 대해
답변을 요청드린 상태입니다.
담당선생님께 전달 받으면 추가 답변으로 안내해 드리도록 하겠습니다.
----------------------------선생님 답변 내용-------------------------------
input.Position.y = Origin.y + Extent.y - (input.Position.y - displace.y) % Extent.y;
input.Position.x += cos(Time - input.Random.x) * Turblence;
input.Position.z += cos(Time - input.Random.y) * Turblence;
위 세줄은 정점이 이동할 위치를 계산해 놓는 부분입니다. 그리고
input.Position.xyz = Origin + (Extent + (input.Position.xyz + displace) % Extent) % Extent - (Extent * 0.5f);
위 부분은 눈송이가 출력된 공간으로 옮겨주는 부분이라고 이해하시면 좋을듯 해요.
이를테면 눈이 얼마만큼 움직일 건가를 계산해놓고, 눈이 출력될 공간으로 이동시킨다고 생각하시면 이해가 빠를듯합니다.
---------------------------------------------------------------------
감사합니다.