제 목 14강 snow 구현 강의에서 질문이 있습니다.
작성자 제원 등록날짜 2021-11-22 23:47:14 / 조회수 : 50
강좌명 [단과] DirectX 11 3D 게임프로그래밍 Part 6
  • 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요소만 따로 구하는이유를 제가 정확히 이해를 못한 부분도 있는데 혹시 그 부분을 다시 설명해주실 수 있으실까요? 감사합니다.

     

  • 작성자 : 게임클래스 / 등록날짜 : 2021-11-23 21:00:18
  • 안녕하세요 게임클래스 입니다.

     

    현재 담당 교수님이신 '박문수 교수님'께 해당 질문에 대해 

    답변을 요청드린 상태입니다.

     

    담당선생님께 전달 받으면 추가 답변으로 안내해 드리도록 하겠습니다.

    ----------------------------선생님 답변 내용-------------------------------

    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);
    위 부분은 눈송이가 출력된 공간으로 옮겨주는 부분이라고 이해하시면 좋을듯 해요.
    이를테면 눈이 얼마만큼 움직일 건가를 계산해놓고, 눈이 출력될 공간으로 이동시킨다고 생각하시면 이해가 빠를듯합니다.

     

    ---------------------------------------------------------------------

    감사합니다.