0부터 Vulkan Ray Tracing[0]

11489 단어 C++Vulkantech
분량이 많아져서 책으로 정리했다.나는 이것이 더 읽기 쉽다고 생각한다.
https://zenn.dev/nishiki/books/f468197dca2dd8

개시하다


2020년 11월Vulkan Ray Tracing의 최종 사양에 발매됐고, 12월에는 최종 규격에 대응하는 볼칸SDK1.2.162.0을 공개했다.이렇게 되면 개발자는 다중 플랫폼에서 실시간 지연을 할 수 있다.

이 보도에 관하여


이 글에서는 Vulkan Ray Tracing이 각 단계에 따라 0에서 삼각형까지의 단계를 설명합니다.
이 문장은 다음과 같은 특징이 있다.
  • 제3자의 Vulkan 라이브러리를 사용하지 않고 0부터 설명
  • 최종 사양
  • 공식 C++ 자물쇠vulkan.hpp를 사용하기 때문에 불필요한 설명이 없음
  • 지연에 필요한 최소 프로그램 목표
  • 소형 조수 헤더 1개만 제공

  • 조수 정보


    지연과 무관한 Vulkan의 설치 섹션은 도우미로 건너뛸 수 있습니다.이 조수는 단지 간단한 함수를 총결해 낸 정도일 뿐 큰 종류는 없다.그래서 디자인으로는 좋지 않지만 간단하게 읽을 수 있어요.또한 이 조수는 대부분Vulkan Tutorial을 따르기 때문에 함수가 잘 모르면 여기를 참조하여 이해할 수 있다.

    컨디션

  • Vulkan SDK 1.2.162.0
  • Windows10 64bit
  • NVIDIA GeForce 1070Ti
  • GEFORCE GAME READY DRIVER 460.89
  • Visual Studio 2019
  • 2020년 12월까지 최신 SDK와 드라이버가 아니면 이동할 수 없으니 주의하세요.

    창고.


    이 글에 사용된 프로그램은 이 창고에 놓여 있다.
    https://github.com/nishidate-yuki/vulkan_raytracing_from_scratch

    필자 정보(optional)


    필자는 볼칸에 막 입문한 학생이어서 이해가 부족한 점도 많다.나는 인터넷에 잘못된 기술을 남겨서는 안 된다고 생각한다. 만약 그렇지 않은 곳이 있으면 반드시 지적해 주십시오.의 DM도 괜찮다.

    프로젝트 설정


    청원

  • vulkan.hpp
  • C++17
  • GLFW
  • 설정


    상기 요구를 충족시키기 위해 항목을 만드십시오.
    자세한 내용은 Vulkan Tutorial 개발 환경 스탬프를 참조하십시오.이 글은 vulkan.h 이 아니라 vulkan.hpp 을 사용하지만, 이 파일들은 SDK의 같은 디렉터리에 포함되어 있기 때문에 설정을 변경할 필요가 없습니다.
    개인적으로 GLFW는 vcpkg 가져오기를 사용하는 것이 가장 간단하다고 생각합니다.
    다음은 조수를 다운로드하여 프로젝트에 추가하십시오.여기서 다운로드할 수 있습니다.
    https://github.com/nishidate-yuki/vulkan_raytracing_from_scratch/blob/master/code/vkutils.hpp

    0. 데이텀 코드


    기본 코드


    코드 당장 써.우선 기초 코드를 기술하다.
    #include "vkutils.hpp"
    
    class Application
    {
    public:
        void run()
        {
            initWindow();
            initVulkan();
            mainLoop();
            cleanup();
        }
    
    private:
        void initWindow()
        {
        }
    
        void initVulkan()
        {
        }
    
        void mainLoop()
        {
        }
    
        void cleanup()
        {
        }
    };
    
    int main()
    {
        Application app;
    
        try {
            app.run();
        } catch (const std::exception& e) {
            std::cerr << e.what() << std::endl;
            return EXIT_FAILURE;
        }
    
        return EXIT_SUCCESS;
    }
    
    오류 없이 실행할 수 있는지 확인하십시오.

    창을 GLFW로 내보내기


    GLFW를 사용하여 창을 엽니다.우선 클래스에서 창 크기를 정의합니다.
    const uint32_t WIDTH = 800;
    const uint32_t HEIGHT = 600;
    
    다음에 창의 제어점을 클래스 변수에 추가합니다.
    private:
        GLFWwindow* window;
    
    initWindow()에 창을 생성합니다.
    void initWindow()
    {
        glfwInit();
    
        glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
        glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
    
        window = glfwCreateWindow(WIDTH, HEIGHT, "Vulkan", nullptr, nullptr);
    }
    
    mainLoop()에 순환을 추가합니다.
    void mainLoop()
    {
        while (!glfwWindowShouldClose(window)) {
            glfwPollEvents();
        }
    }
    
    cleanup()에서 GLFW를 끝내는 것을 잊지 마세요.
    void cleanup()
    {
        glfwDestroyWindow(window);
        glfwTerminate();
    }
    
    이렇게 실행하면 창이 나올 거예요.

    기준 코드가 완성되었습니다.다음 장에서는 Vulkan 설정을 수행합니다.
    연기 사항은 이미 삭제되었으니, 이어서 이 책을 보십시오.기사처럼 공짜예요.
    https://zenn.dev/nishiki/books/f468197dca2dd8
    여기까지의 C++ 코드(00 base code.cpp)

    좋은 웹페이지 즐겨찾기