Giter Club home page Giter Club logo

learnd3d11's People

Contributors

16-bit-dog avatar alexb8675 avatar alyx6020 avatar blandrice avatar deccer avatar diamond-d0gs avatar rtarun9 avatar spec-chum avatar spnda avatar themperror avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

learnd3d11's Issues

Project: Loading Meshes

  • Use ID3DBlob instead of ID3D10Blob
  • Add PostBuild to copy deps to $(OutDir) see 2-HelloFroge

Content: Add new chapter 1-1-4-abstractions

Start a new chapter in 1-1-getting-started which introduces the changes we see and go with in the future like pipeline/pipelinefactory/graphicsdevice/vertextype and so forth and provide a guide what to change/add/remove exactly

Fix Shader not found

Shaders could not be loaded, because they are being loaded relative from the $(OutDir). However the default working directory is the project directory and not OutDir :(

This needs to be manually set

sRGB

Do we want to add srgb as early as possible? to avoid nanokatze complaining about the wrong colorspace triangle :P

LaTeX support?

Hi,

This is more like a "feature request" instead of a "issue": (I think creating a discussion thread is a better choice)

I was thinking about starting to write the articles about linear transformations and coordinate systems. I'd like using LaTeX since it is TON easier for me to write mathematical formulas and articles with it. Is this possible?

I might try using Markdown, but I'm not sure if stuff is going to look as good as in latex. I'm also not really familiar with it.

Thanks.

1-2-4: Debug - RenderDoc

How to debug your graphics, show RenderDoc, 1 or two screenshots, showing our debug names etc... refer to official docs and its getting-started + that wizard thingy to troubleshoot black screen :P

Provide an inviting README.md

The current README is empty and doesn't explain anything for people who stumble upon this project. Let's come up with some text and possibly a bit of pics which explain this project in a few inviting words :)

1-1-3: HelloTriangle Shader compilation

Shaders can be compiled from file using D3D11Compile... but also from Visual Studio itself, that should be showed,

Learning how your IDE works and what it provides is a useful thing

Come up with a structure for the first section of the tutorial series to get a rough idea what we need to add/implement/copy

Introduction

Getting Started

  • What D3D11 and GPU APIs actually do
  • Cram a picture in here of the DX11 graphics pipeline to show where we are, and what we need
  • GLFW window (HelloWindow) with link to HelloWin32Window (but no going through what it all means)
  • D3D11 initialization, Raw Pointers vs ComPtr (HelloComApplication) and (HelloD3D11)
  • Swapchain creation, clearing and resizing the screen
  • Hello Triangle
    • Shaders
      • Show how they can be compiled with VS?
      • Explain how to compile from code (D3D11CompileFromFile...)
    • InputLayout
    • VertexBuffer
    • Explain vertex/indexbuffers, primitivetopology, shaders (overview) and RasterizerStates\

Debug and how to help yourself

  • ClearState and explain why this is useful
  • Debug Layer/Debug Device
  • Naming things
  • RenderDoc
  • NvOptimusEnablement/AmdWhateverPerformance for laptop users

Model Loading

  • Loading Textures (HelloFroge) (that means introducing an image library)
  • Loading Meshes
  • Loading Materials/Textures
  • DepthStencilTexture+DSV
  • DepthStencilState
  • IndexBuffer
  • Math
    • Coordinate Systems
    • Shader support for -> (Would be cool if we we could apply terminology to shaders too and have easy ways of conversion between those... @NeuRE is using something like that in their engine... clipToWorld, clipToView, worldToView etc imoh that makes things easier to grasp
  • Constant Buffers
  • A camera to admire froge

Does it make sense to come up with some sort of "Scene" VkGuide also mentions that and it makes sense imho (this could lead to advanced articles to either how to use ecs like entt, or whatever)

1-2-0: Debug - Overview

Explain why Debugging in graphics programming is useful and most of the time necessary, especially when starting out :GP:

1-3-6: Camera

That means introducing Input as well.

We will take the stuff which is in HelloWindow still (Input/Keyboard/Mouse)

Explain different camera models? not just perspective/ortho view, but also first/thirdperson stuff? flycam etc

Explain coordinate systems

Integrate/Enable .editorconfig

.editorconfig should enable common code style/formatting settings.

Consense was that we derive it from the currently existing HelloFroge project

(obviously if need be we change it)

Nuke wstring where possible, convert at location from string instead

it's a hassle keeping a mix of string and wstring in things, you'll keep running into situations where you have your string variable but it wants a wstring or vice versa later. keeping one of the two and converting seems way more convenient (and vouch for string for utf8)

example conversion utility:

std::wstring ToWideString(const std::string& string)
{
    std::wstring newString(string.size()*sizeof(wchar_t), '\0');
    size_t numCharsConverted = 0;
    mbstowcs_s(&numCharsConverted, newString.data(), newString.size(), string.data(), string.size());
    newString.resize(numCharsConverted-1);
    return newString;
}

Come up with a structure for the second section of the tutorial

All that tbd, we should VC like last time

Basics

  • Colors
  • Blending (BlendState)
  • Dear Imgui? (it might make sense to manipulate light position/color later why not introduce dear imgui here, we could manipulate the color of the 3 corners of the HelloTriangle to see it in action and also how interpolation by the PS affects the outcome
  • Gamma Correction
  • Blinn-Phong with hardcoded directional light
  • Blinn-Phong materials and lights
  • Normal Mapping
  • Lights from CPU
    • Point
    • Spot
    • Directional
    • Light Geometry (I think we should use them from the start, for point/spot lights)
    • Debug Lights
  • RenderTargets (aka Framebuffers, we need them for Shadows and Defered and whatnot)
    • We could also introduce Framebuffer scaling, like modern games provide a way too (render to 50% of screen res etc) (Quake Chanmpions, Path of Exile on top of my head)
  • Shadows
    • Implement basic shadow
    • Fixup with bias, front face culling, PCF
    • Point Light Cubes?
    • Cascade Shadow maps
    • Variance Shadow Maps?
  • Frustum Culling?
  • Forward+ ... (steal from 3dgep?)
  • Deferred Shading
    • Tightly Packed GBuffer?
    • Classical Deferred
    • Tiled/Clustered ... (we could steal from 3dgep? but implement it using our "framework")

PBR

  • Rendering equation and basic theory
  • Used BRDFs
  • Physically based lighting
  • IBL with SH

Techniques

  • Compute Shaders
  • Text Rendering
    • SDF Bitmap fonts? (using compute to generate the font bitmap)
  • Particles
  • Skeletal Animation
  • SSAO
  • SSR
  • Frustum Culling
  • Sky + Clouds
  • Reflection probes
  • GI
    • Voxel Cone Tracing (see 3dgep?)

Post-processing

  • HDR + Tonemapping
  • Better camera + Bloom
  • Depth of Field
  • TAA
  • Motion Blur
  • Lens flare

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.