GraphicsProgramming / learnd3d11

Learn how to D3D11

Home Page:https://graphicsprogramming.github.io/learnd3d11/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

deccer opened this issue · comments

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)

I feel the GI section under Techniques might be a bit out of scope for a beginner.

I feel the GI section under Techniques might be a bit out of scope for a beginner.

Where should it go into? I understand Techniques as some sort of mix between "Advanced Topics" and "Stuff modern engines do anyway". And this is not only sold as a 100% noob thing and then you stop after the projected textures section... Ah Texture Projection could be another section 👯

I feel the GI section under Techniques might be a bit out of scope for a beginner.

Where should it go into? I understand Techniques as some sort of mix between "Advanced Topics" and "Stuff modern engines do anyway". And this is not only sold as a 100% noob thing and then you stop after the projected textures section... Ah Texture Projection could be another section 👯

Idk, just feels out of scope for this tutorial as a whole. I feel they can go learn and implement Voxel GI themselves if they feel so inclined.

I feel the GI section under Techniques might be a bit out of scope for a beginner.

Where should it go into? I understand Techniques as some sort of mix between "Advanced Topics" and "Stuff modern engines do anyway". And this is not only sold as a 100% noob thing and then you stop after the projected textures section... Ah Texture Projection could be another section 👯

Idk, just feels out of scope for this tutorial as a whole. I feel they can go learn and implement Voxel GI themselves if they feel so inclined.

Isnt that true for other topics as well then? Would it not be a cool thing to have all the things under one umbrella, and updated where necessary should stuff change or new techniques come up

Maybe we have 2 different views of what this tutorial series is. I view this as a way for a burgeoning GP to get their legs to help them research and implement more advanced techniques, learn a more advanced API, etc.

Yes, it will be. We wont be adding GI that quick anyway, it just crossed my mind.

And would it hurt? That's exactly what LOGL lacks, there's only a few odd guest articles in there, which are in a complete different format than Joeys'.

To have one resource for all the things you would want to implement using d3d11 could very well be the thing we are working on right now. One step at a time.

I feel the GI section under Techniques might be a bit out of scope for a beginner.

Just call it intermediate?

I think Techniques could have a little tag of some kind, to indicate whether this is a complex, simple, or something in between (although that depends on how well you understand every topic i guess)

Why is Forward+ under Deferred Rendering? Also we should reorder that section so Forward+ rendering is completed before Deferred Rendering so the clustered lighting system can be used for rendering opaque objects with Deferred and they'll have the Forward+ renderer to use for transparent objects.

The order was chosen arbitrarily. Let me adjust that

I'd also swap Classical Deferred and Tightly Packed G-buffer, establish the theory first and then present how it's typically done in practice.

We extensively discussed during VC and that was the outcome for part 1.

Once we have that going, explaining everything + providing source etc, we want to have people try it out, to get feedback and then go from there