레이마칭에서도 원경이나 각도의 딱따구리 카메라 앵글을 재현하고 싶었다

3702 단어 GLSLWebGL
이 문서는 WebGL Advent Calendar 2018 25일 문서입니다.

Tokyo Demo Fest 2018의 작품을 만드는 데 당연한 일을 할 수 없었던 것을 쓰려고 생각합니다.

개요



우선은 TDF2018에 응모한 작품입니다.
htps //w w. 샤로 r과 y. 이 m/ゔぃ에w/MlyBRd
※매우 무겁습니다


요소는 단 2개
  • 구름
  • 전투기

  • 이것뿐입니다.
    구름에 대해서는 이전에 쓴 레이마칭으로 숨어있는 구름 만들기 를 봐 주세요.
    여기에서는 전투기에 대해 저것 이것 씁니다.

    전투기



    작품에서는 몇몇 전투기가 통과할 뿐이었습니다만, 본래는 이러한 개 파이트를 표현하고 싶었습니다.
    그러나 일반적인 레이마칭에서는 어려운 표현이 있습니다.



    그것이 물량과 수평선입니다.
    레이 마칭이라고 하는 것과 같은 것을 대량으로 표시하는 것이 자랑스러운 이미지가 있습니다만,
    대량으로 표시 할 수있는 것은 mod 함수로 양산 할 수있는 기하학적 패턴뿐입니다.

    전투기는 (본래의 목표에서는) 공간을 등간격으로 나란히 날아가는 것이 아니라, 적기의 뒤에 달라붙거나 도망치거나 하는 것이기 때문에 그만큼 전투기의 거리 함수의 실행 횟수는 증가해 갑니다 .
    이것은 전투기의 형상이 복잡하면 복잡할수록 계산량이 배증해 갑니다.

    거기서 자자-라고 생각한 것이 전투기 전체를 ​​완전히 덮을 뿐인 구체를 정의해, 그 구체에 레이가 히트하면 구체의 반경분 레이를 되돌려, 거기로부터 레이마칭을 개시한다고 하는 것입니다.




    맞으면 depth color normal을 반환하여 다른 색상과 합성합니다.
    글쎄, if와 뭐든지 사용하기 때문에 실제로 어느 쪽이 경량인지는 측정하지 않으면 모릅니다.
    몇 가지 장점이 있습니다.

    장점



    레이가 물체 주변을 가로 지르면 서리가 나지 않는다.



    레이 마칭의 특징으로 그리지 않더라도 오브젝트 부근을 통과하면 레이의 마치 폭이 줄어듭니다.
    레이가 전투기에 도달하지 않으면 당연히 전투기가 화면에 표시되지 않습니다.

    이것은 처음과 같은 앞에서 안쪽에 보여주고 싶은 상황을 재현할 때 매우 불리합니다.
    mod 함수를 사용할 수 있는 경우는 1회의 거리 함수로 판정할 수 있습니다만, 전투기가 10 몇기 나와 기총이나 미사일이나 표현하려고 하면 타다는 죄송합니다(아마)

    Far을 무시할 수 있다



    레이 마칭은 위의 이유로 원래 원경을 그리는 데 적합하지 않습니다.
    많은 레이마칭 작품에서도 카메라로부터 일정 거리 떨어져 있으면 피사계 심도 Fog로 오마화하고 있는 것을 알 수 있다고 생각합니다.
    그러나 이 방법이라면 아무리 먼 곳이라도 제대로 그립니다.

    개체를 정리하기 쉽습니다.



    코드를 쓰는 방법의 문제가 됩니다만, 몇개의 거리 함수 속에 던져진 레이가 누구의 모르는 거리나 법선이나 따를 따로 돌아오는 것은 드물게 쓰고 있는 본인조차 그것이 무엇인가 잊습니다.

    원경을 표현하고 싶다



    여기는 매우 간단합니다.
    TDF용 작품을 만들 때의 과정에서 태어난 작품입니다.
    htps //w w. 샤로 r과 y. 이 m/ゔぃ에w/MtyfRc



    생각은 상기와 같고, 레이가 부근의 오브젝트에 당겨진다면 맞는 곳까지 무시하면 좋지 않다고 하는 것입니다.
    셰이더 예술을 생업으로 하고 있는 사람에게 있어서는 말할 것도 없는 테크닉이라고 생각합니다만 간단하게 도해를 만들었습니다.



    기타



    내년에는 sin파를 사용한 무한한 terrain으로 원경을 만들려고 합니다.

    좋은 웹페이지 즐겨찾기