Skip to content

Commit

Permalink
Updating docs
Browse files Browse the repository at this point in the history
  • Loading branch information
jherico committed Mar 11, 2018
1 parent bf43556 commit c0d4533
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 38 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

data/**/*

# User-specific files
*.suo
*.user
Expand Down
44 changes: 22 additions & 22 deletions EXAMPLES_BASIC.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
## Intermediate Examples

### [Gears](examples/basic/gears.cpp)
### [Gears](examples/gears/gears.cpp)
<img src="./documentation/screenshots/basic_gears.png" height="96px" align="right">

Vulkan interpretation of glxgears. Procedurally generates separate meshes for each
gear, with every mesh having it's own uniform buffer object for animation. Also
demonstrates how to use different descriptor sets.
<br><br>

### [Texture mapping](examples/basic/texture.cpp)
### [Texture mapping](examples/texture/texture.cpp)
<img src="./documentation/screenshots/basic_texture.png" height="96px" align="right">

Loads a single texture and displays it on a simple quad. Shows how to upload a
Expand All @@ -17,7 +17,7 @@ demonstrates how to display the texture using a combined image sampler with
anisotropic filtering enabled.
<br><br>

### [Cubemaps](examples/basic/texturecubemap.cpp)
### [Cubemaps](examples/texturecubemap/texturecubemap.cpp)
<img src="./documentation/screenshots/texture_cubemap.png" height="96px" align="right">

Building on the basic texture loading example a cubemap is loaded into host visible
Expand All @@ -27,7 +27,7 @@ The demo uses two different pipelines (and shader sets) to display the cubemap a
skybox (background) and as a source for reflections.
<br><br>

### [Texture array](examples/basic/texturearray.cpp)
### [Texture array](examples/texturearray/texturearray.cpp)
<img src="./documentation/screenshots/texture_array.png" height="96px" align="right">

Texture arrays allow storing of multiple images in different layers without any
Expand All @@ -36,15 +36,15 @@ This example demonstrates the use of a 2D texture array with instanced rendering
Each instance samples from a different layer of the texture array.
<br><br>

### [Particle system](examples/basic/particlefire.cpp)
### [Particle system](examples/particlefire/particlefire.cpp)
<img src="./documentation/screenshots/particlefire.png" height="96px" align="right">

Point sprite based particle system simulating a fire. Particles and their attributes
are stored in a host visible vertex buffer that's updated on the CPU on each frame.
Also makes use of pre-multiplied alpha for rendering particles with different
blending modes (smoke and fire) in one single pass.

### [Pipelines](examples/basic/pipelines.cpp)
### [Pipelines](examples/pipelines/pipelines.cpp)
<img src="./documentation/screenshots/basic_pipelines.png" height="96px" align="right">

[Pipeline state objects](https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#pipelines)
Expand All @@ -57,15 +57,15 @@ visuals and shaders and also demonstrates the use
[pipeline derivatives](https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#pipelines-pipeline-derivatives).
<br><br>

### [Mesh loading and rendering](examples/basic/pipelines.cpp)
### [Mesh loading and rendering](examples/mesh/mesh.cpp)
<img src="./documentation/screenshots/basic_mesh.png" height="96px" align="right">

Uses [assimp](https://github.com/assimp/assimp) to load a mesh from a common 3D
format including a color map. The mesh data is then converted to a fixed vertex
layout matching the shader vertex attribute bindings.
<br><br>

### [Multi sampling](examples/basic/multisampling.cpp)
### [Multi sampling](examples/multisampling/multisampling.cpp)
<img src="./documentation/screenshots/multisampling.png" height="96px" align="right">

Demonstrates the use of resolve attachments for doing multisampling. Instead of
Expand All @@ -78,7 +78,7 @@ with fine details against a bright background. Here is a
compare.
<br><br>

### [Mesh instancing](examples/basic/instancing.cpp)
### [Mesh instancing](examples/instancing/instancing.cpp)
<img src="./documentation/screenshots/instancing.jpg" height="96px" align="right">

Shows the use of instancing for rendering many copies of the same mesh using
Expand All @@ -88,13 +88,13 @@ vertex attributes with a per-instance step rate. The instance data also contains
texture layer index for having different textures for the instanced meshes.
<br><br>

### [Indirect rendering](examples/basic/indirect.cpp)
### [Indirect rendering](examples/indirect/indirect.cpp)

Shows the use of a shared vertex buffer containing multiple shapes to rendering
numerous instances of each shape with only one draw call.
<br><br>

### [Push constants](examples/basic/pushconstants.cpp)
### [Push constants](examples/pushconstants/pushconstants.cpp)
<img src="./documentation/screenshots/push_constants.png" height="96px" align="right">

Demonstrates the use of push constants for updating small blocks of shader data with
Expand All @@ -103,7 +103,7 @@ sources with position updates through a push constant block in a separate comman
buffer.
<br><br>

### [Skeletal animation](examples/basic/skeletalanimation.cpp)
### [Skeletal animation](examples/skeletalanimation/skeletalanimation.cpp)
<img src="./documentation/screenshots/mesh_skeletalanimation.png" height="96px" align="right">

Based on the mesh loading example, this example loads and displays a rigged COLLADA
Expand All @@ -112,7 +112,7 @@ passed to the vertex shader together with the final bone transformation matrices
vertex position calculations.
<br><br>

### [(Tessellation shader) PN-Triangles](examples/basic/tessellation.cpp)
### [(Tessellation shader) PN-Triangles](examples/tessellation/tessellation.cpp)
<img src="./documentation/screenshots/tess_pntriangles.jpg" height="96px" align="right">

Generating curved PN-Triangles on the GPU using tessellation shaders to add details
Expand All @@ -121,7 +121,7 @@ with shaders from
[this tutorial](http://onrendering.blogspot.de/2011/12/tessellation-on-gpu-curved-pn-triangles.html).
<br><br>

### [Spherical environment mapping](examples/basic/sphericalenvmapping.cpp)
### [Spherical environment mapping](examples/sphericalenvmapping/sphericalenvmapping.cpp)
<img src="./documentation/screenshots/spherical_env_mapping.png" height="96px" align="right">

Uses a (spherical) material capture texture containing environment lighting and
Expand All @@ -131,15 +131,15 @@ array to store (and select) several material caps that can be toggled at runtime
The technique is based on [this article](https://github.com/spite/spherical-environment-mapping).
<br><br>

### [(Geometry shader) Normal debugging](examples/basic/geometryshader.cpp)
### [(Geometry shader) Normal debugging](examples/geometryshader/geometryshader.cpp)
<img src="./documentation/screenshots/geom_normals.png" height="96px" align="right">

Renders the vertex normals of a complex mesh with the use of a geometry shader. The
mesh is rendered solid first and the a geometry shader that generates lines from the
face normals is used in the second pass.
<br><br>

### [Distance field fonts](examples/basic/distancefieldfonts.cpp)
### [Distance field fonts](examples/distancefieldfonts/distancefieldfonts.cpp)
<img src="./documentation/screenshots/font_distancefield.png" height="96px" align="right">

Instead of just sampling a bitmap font texture, a texture with per-character signed
Expand All @@ -150,30 +150,30 @@ Distance field font textures can be generated with tools like
[Hiero](https://github.com/libgdx/libgdx/wiki/Hiero).
<br><br>

### [Vulkan demo scene](examples/basic/vulkanscene.cpp)
### [Vulkan demo scene](examples/vulkanscene/vulkanscene.cpp)
<img src="./documentation/screenshots/vulkan_scene.png" height="96px" align="right">

More of a playground than an actual example. Renders multiple meshes with different
shaders (and pipelines) including a background.
<br><br>


### [(Tessellation shader) Displacement mapping](examples/basic/displacement.cpp)
### [(Tessellation shader) Displacement mapping](examples/displacement/displacement.cpp)
<img src="./documentation/screenshots/tess_displacement.jpg" height="96px" align="right">

Uses tessellation shaders to generate additional details and displace geometry based
on a displacement map (heightmap).
<br><br>

### [Parallax mapping](examples/basic/parallaxmapping.cpp)
### [Parallax mapping](examples/parallaxmapping/parallaxmapping.cpp)
<img src="./documentation/screenshots/parallax_mapping.jpg" height="96px" align="right">

Like normal mapping, parallax mapping simulates geometry on a flat surface. In
addition to normal mapping a heightmap is used to offset texture coordinates
depending on the viewing angle giving the illusion of added depth.
<br><br>

### [(Extension) VK_EXT_debug_marker](examples/basic/debugmarker.cpp)
### [(Extension) VK_EXT_debug_marker](examples/debugmarker/debugmarker.cpp)
<img src="./documentation/screenshots/ext_debugmarker.jpg" width="170px" align="right">

Example application to be used along with
Expand All @@ -183,14 +183,14 @@ functionality to set debug markers, regions and name objects for advanced debugg
in an offline graphics debugger like [RenderDoc](http://www.renderdoc.org).
<br><br>

### [Multi threaded command buffer generation](examples/broken/multithreading.cpp)
### [Multi threaded command buffer generation](examples/multithreading/multithreading.cpp)
<img src="./documentation/screenshots/multithreading.png" height="96px" align="right">
This example demonstrates multi threaded command buffer generation. All available hardware threads are used to generated n secondary command buffers concurrent, with each thread also checking object visibility against the current viewing frustum. Command buffers are rebuilt on each frame.

Once all threads have finished (and all secondary command buffers have been constructed), the secondary command buffers are executed inside the primary command buffer and submitted to the queue.
<br><br>

### [Occlusion queries](examples/basic/occlusionquery.cpp)
### [Occlusion queries](examples/occlusionquery/occlusionquery.cpp)
<img src="./documentation/screenshots/occlusion_queries.png" height="96px" align="right">

#### FIXME the queies seem to work, but generate validation errors every frame
Expand Down
4 changes: 2 additions & 2 deletions EXAMPLES_BROKEN.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

These examples are not functioning as intended yet.

### [Text overlay (Multi pass)](examples/broken/textoverlay.cpp)
### [Text overlay (Multi pass)](examples/textoverlay/textoverlay.cpp)
<img src="./documentation/screenshots/textoverlay.png" height="96px" align="right">

Renders a 2D text overlay on top of an existing 3D scene. The example implements a text overlay class with separate descriptor sets, layouts, pipelines and render pass to detach it from the rendering of the scene. The font is generated by loading glyph data from a [stb font file](http://nothings.org/stb/font/) into a buffer that's copied to the font image.

After rendering the scene, the second render pass of the text overlay class loads the contents of the first render pass and displays text on top of it using blending.

### [Omnidirectional shadow mapping](examples/broken/shadowmappingomni.cpp)
### [Omnidirectional shadow mapping](examples/shadowmappingomni/shadowmappingomni.cpp)
<img src="./documentation/screenshots/shadow_omnidirectional.png" height="96px" align="right">

Uses a dynamic 32 bit floating point cube map for a point light source that casts shadows in all directions (unlike projective shadow mapping).
Expand Down
6 changes: 3 additions & 3 deletions EXAMPLES_COMPUTE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Demonstrate the use of compute shaders to achieve effects

### [(Compute shader) Particle system](examples/compute/computeparticles.cpp)
### [(Compute shader) Particle system](examples/computeparticles/computeparticles.cpp)
<img src="./documentation/screenshots/compute_particles.jpg" height="96px" align="right">

Attraction based particle system. A shader storage buffer is used to store particle
Expand All @@ -12,7 +12,7 @@ use of memory barriers for synchronizing vertex buffer access between a compute
graphics pipeline
<br><br>

### [(Compute shader) Ray tracing](examples/compute/raytracing.cpp)
### [(Compute shader) Ray tracing](examples/raytracing/raytracing.cpp)
<img src="./documentation/screenshots/compute_raytracing.png" height="96px" align="right">

Implements a simple ray tracer using a compute shader. No primitives are rendered by
Expand All @@ -21,7 +21,7 @@ results of the scene rendered by the compute shaders. Also implements shadows an
basic reflections.
<br><br>

### [(Compute shader) Image processing](examples/compute/computeshader.cpp)
### [(Compute shader) Image processing](examples/computeshader/computeshader.cpp)
<img src="./documentation/screenshots/compute_imageprocessing.jpg" height="96px" align="right">

Demonstrates the use of a separate compute queue (and command buffer) to apply
Expand Down
10 changes: 5 additions & 5 deletions EXAMPLES_INIT.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
## Beginner Examples

### [Context](examples/init/context.cpp)
### [Context](examples/context/context.cpp)

Basic example of creating a Vulkan instance, physical device, queue, command pool,
etc. However, it does not create a rendering window and produces no graphical
output, instead printing out some basic information of about the current device.

### [Swap Chain](examples/init/swapchain.cpp)
### [Swap Chain](examples/swapchain/swapchain.cpp)

Create a window and a Vulkan swap chain connected to it. Uses an empty command
buffer to clear the frame with a different color for each swap chain image. This is
the most basic possible application that colors any pixels on a window surface.

### [Triangle](examples/init/triangle.cpp)
### [Triangle](examples/triangle/triangle.cpp)
<img src="./documentation/screenshots/basic_triangle.png" height="96px" align="right">

Most basic example that renders geometry. Renders a colored triangle using an
Expand All @@ -27,7 +27,7 @@ boilerplate that you'd usually encapsulate in helper functions and classes (whic
what the other examples do).
<br><br>

### [Triangle Revisited](examples/init/triangleRevisited.cpp)
### [Triangle Revisited](examples/triangleRevisited/triangleRevisited.cpp)
<img src="./documentation/screenshots/basic_triangle.png" height="96px" align="right">

A repeat of the triangle example, except this time using the base class that will be
Expand All @@ -37,7 +37,7 @@ been moved into the base class or helper functions.
This is the first example that allows you to resize the window, demonstrating the
ability to create the swap chain and any objects which depend on the swap chain.

### [Triangle Animated](examples/init/triangleAnimated.cpp)
### [Triangle Animated](examples/triangleAnimated/triangleAnimated.cpp)
<img src="./documentation/screenshots/basic_triangle.png" height="96px" align="right">

Another repeat of the triangle example, this time showing a mechanism by which we
Expand Down
8 changes: 4 additions & 4 deletions EXAMPLES_OFFSCREEN.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ Uses a separate framebuffer (that is not part of the swap chain) and a texture
target for offscreen rendering. The texture is then used as a mirror.
<br><br>

### [Radial blur](examples/offscreen/radialblur.cpp)
### [Radial blur](examples/radialblur/radialblur.cpp)
<img src="./documentation/screenshots/radial_blur.png" height="96px" align="right">

Demonstrates basic usage of fullscreen shader effects. The scene is rendered
offscreen first, gets blitted to a texture target and for the final draw this
texture is blended on top of the 3D scene with a radial blur shader applied.
<br><br>

### [Bloom](examples/offscreen/bloom.cpp)
### [Bloom](examples/bloom/bloom.cpp)
<img src="./documentation/screenshots/bloom.png" height="96px" align="right">

Implements a bloom effect to simulate glowing parts of a 3D mesh. A two pass
Expand All @@ -26,7 +26,7 @@ version of the scene only containing the glowing parts of the 3D mesh. This then
gets blended onto the scene to add the blur effect.
<br><br>

### [Deferred shading](examples/offscreen/deferred.cpp)
### [Deferred shading](examples/deferred/deferred.cpp)
<img src="./documentation/screenshots/deferred_shading.png" height="96px" align="right">

Demonstrates the use of multiple render targets to fill a G-Buffer for deferred
Expand All @@ -38,7 +38,7 @@ lighting calculations based on these in screen space, thus allowing for much mor
light sources than traditional forward renderers.
<br><br>

### [Shadowmapping](examples/offscreen/shadowmapping.cpp)
### [Shadowmapping](examples/shadowmapping/shadowmapping.cpp)
<img src="./documentation/screenshots/shadowmapping.png" height="96px" align="right">

Shows how to implement directional dynamic shadows with a single shadow map in two passes. Pass one renders the scene from the light's point of view and copies the depth buffer to a depth texture.
Expand Down
4 changes: 2 additions & 2 deletions EXAMPLES_VR.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ offscreen renderer to do all the common rendering tasks. It's up to the
individual derived class to properly fetch recommended offscreen texture
size, as well as the projection and view matrices from the VR API.

### [Oculus SDK Usage](examples/windows/vr_oculus.cpp)
### [Oculus SDK Usage](examples/vr_oculus/vr_oculus.cpp)
<img src="./documentation/screenshots/vr.png" height="96px" align="right">

Demonstrates using the Oculus SDK with an offscreen Vulkan renderer to create images
which are then passed to an the SDK for display on an HMD
<br><br>

### [OpenVR SDK Usage](examples/windows/vr_openvr.cpp)
### [OpenVR SDK Usage](examples/vr_openvr/vr_openvr.cpp)
<img src="./documentation/screenshots/vr.png" height="96px" align="right">

Demonstrates using the OpenVR SDK with an offscreen Vulkan renderer to create images
Expand Down

0 comments on commit c0d4533

Please sign in to comment.