Giter Site home page Giter Site logo

strelka's People

Contributors

doktapola avatar egortrue avatar ikryukov avatar jswark avatar lukichevapolina avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

strelka's Issues

UI

  • Settings system load/store from file (json, yaml or plain text)
  • display settings using imgui
  • fast key-value access by path getFloat("render/post/tone/alpha")
  • tests

ImGUI

add lib
run vk sample

Shadow mapping

  • render scene depth from light position
  • implement shadow pass

shader manager

Slang можно скачать тут https://github.com/shader-slang/slang/releases/download/v0.17.5/slang-0.17.5-win64.zip

  1. добавить в репо в папку external/slang
  2. создать в cmake подпроект статической либы ShaderManager
  • ShaderManager.h
  • ShaderManager.cpp
  1. прописать зависимости для нее от сланга
  • инклюды NeVK\external\slang
  • либ дир NeVK\external\slang\bin\windows-x64\release
  • сама либа slang.lib
  1. пост билд ивент, чтобы копировал slang.dll в папку с бинарем рендера
  2. убедиться, что работает можно так:
    в конструкторе ShaderManager SlangSession* slangSession = spCreateSession(NULL); (#include <slang.h> не забыть)
  3. Добавить зависимость в cmake основного проекта от ShaderManager

TAA

Temporal Anti Aliasing

  • add camera jitter
  • implement render pass
  • write compute (pixel) shader

Texture manager

  • load from disk "png" + "dds" format
  • support many textures (1000+)

Render Lights geometry

  • create rect light mesh (2 triangles) (common for all rect light, per scene, could be created on first use)
  • create light material with flag is light (per light)
  • add light instance using mesh/material for light

Scene

Methods: create/update/destroy:

  • mesh (vertices - float3 + indices - uint32): (SoA, AoS)

v0, v1, v2 …. [v120 - v160] .. - vertex buffer (vertex attribs: float4 pos, float2 uv, float3 normal)

0, 1, 2.. [305 - 700] - index buffer

  • material (float4 - color)
  • instance (mesh id + transform + material)
  • light (float3-4)

shaders project/folder

  1. создать подпроект Shaders (NeVK/shaders), он не должен компилировать ничего
  2. файлы из этой папки (и ее подпапок) с расширениями .hlsl .h должны отображаться в студийном проекте (по-моему это source_group называется в cmake)
  3. билд этого проекта просто копирует их в директорию с бинарем в точно таком же виде и с точно такой же структурой подпапок (либо создает линк)

Tonemapper

  • implement hdr->ldr tonemappers
  • ACES, Reinhard

Resource leak in RenderPass

createGraphicsPipeline creates 2 vulkan objects: mPipelineLayout and mPipeline, but during render pass destruction it destroys only one mPipelineLayout.

Direct Light

  1. Расширить UBO, добавить направление от источника
  2. Добавить в UI поле для задания вектора
  3. Рендер проверяет эти значения, если поменялось, то обновляет UBO

Model loader

Use tiny obj loader:
input: filename -> load/repack -> scene::createMesh(....)

Shader manager

  1. Проект статической либы ShaderManager должен быть отдельным, который зависит от внешней либы Slang
    /shadermanager/
    -ShaderManager.h
    -ShaderManager.cpp
  2. Структура:
    /shaders
    -тут хранятся только шейдеры с расширениями .hlsl, .h
    -проект виден в студии, можно открыть и редактировать, но не пытается его скомпилировать как срр
    -на шаге билда создается ссылка (симлинк) из директории с ехе на эту директорию
  3. главный проект nevk должен зависеть от ShaderManager, но не от slang. проверить можно так: в main.cpp:
    #include <ShaderManager.h>

Camera navigation

  • mouse (lmb, rmb)
  • keyboard (WASD + arrows + q - down + e - up)
  • zoom (scroll)

Scene data repo

store gltf scenes + light files for our test and benchmark
add file for auto loading win-mac

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.