RT Graphics Programming
Graphics glossary
All lessons

Course reference · 243 explained terms

Ray tracing and Vulkan glossary

Clear explanations of the ray-tracing, graphics, mathematical and Vulkan terminology used throughout all 28 lessons.

A reading key for Part II

Six statements to keep beside the Vulkan lessons

Vulkan becomes difficult when several different kinds of name are allowed to blur into one another. These statements do not replace the definitions below. They provide a first test for deciding what a new word is asking the program to do.

Read the prefix

Vk... names a Vulkan type, including handles and structures. vk... names an API command. vkCmd... records device work into a command buffer; it does not perform that work immediately. VK_... names a constant, flag, result or extension.

Version, extension and feature are different claims

An API version states the core vocabulary available. An extension adds a named part of the API. A feature is a reported capability that the logical device enables when it intends to use it. Finding one does not silently establish the other two.

An object is not its backing memory

A buffer or image handle describes a resource. Device memory supplies storage. Memory requirements constrain the compatible allocation, and memory binding joins the two. None of those four statements may stand in for the others.

Read a dependency from producer to consumer

The source stage and access identify where and how the producer wrote. The destination stage and access identify where and how the consumer will read or write. An image layout adds the state required for that image use. A barrier states this route; it is not merely a request to wait for everything.

Synchronization2 is a particular interface

VK_KHR_synchronization2 introduced the stage-and-access vocabulary used by VkDependencyInfo and vkCmdPipelineBarrier2, and Vulkan 1.3 promoted it to core. The API keeps the official American spelling Synchronization2; the surrounding course prose retains British synchronisation.

Source language is not module input

GLSL, HLSL and Slang are human-readable shader languages. A shader compiler can turn them into Vulkan-targeted SPIR-V, which the traditional shader-module route consumes. Changing language changes syntax and tooling; it does not remove the descriptor, stage or feature contracts.

A

acceleration-structure instance

A TLAS record that places and identifies a referenced BLAS for traversal. Several instances may reuse the same geometry while supplying different transforms, masks and application indices.

Also encountered as: TLAS instance, acceleration structure instance

Appears in: Lesson 27

Back to glossary top ↑

access mask

The part of a Vulkan dependency that identifies the kinds of memory access involved, such as shader storage writes or transfer reads. It answers what memory action must be made safe, not where that action occurs.

Also encountered as: access masks, VkAccessFlags2

Appears in: Lesson 18

Back to glossary top ↑

accumulation image

A floating-point image that retains a running sum or related history of sample contributions before a displayed average is produced.

Also encountered as: accumulation buffer

Appears in: Lesson 13, Lesson 18, Lesson 26

Back to glossary top ↑

anti-aliasing

Sampling and reconstruction work used to reduce errors caused by representing continuous image detail on a finite pixel grid.

Also encountered as: antialiasing, AA

Appears in: Lesson 13, Lesson 26

Back to glossary top ↑

any-hit query

A visibility query that may stop after the first accepted intersection because only existence inside the interval is required.

Appears in: Lesson 23

Back to glossary top ↑

any-hit shader

An optional ray-tracing shader invoked for candidate intersections that require an application opacity decision. It may accept, ignore or terminate according to the permitted ray-tracing operations; opaque geometry normally avoids this stage.

Also encountered as: any hit shader

Appears in: Lesson 27, Lesson 28

Back to glossary top ↑

API

Application programming interface: the published commands, types and behaviour through which one program uses a system. A successful API call proves that a request was accepted; it does not prove that the requested rendering calculation was the right one.

Also encountered as: application programming interface

Appears in: Lesson 04, Lesson 10, Lesson 11, Lesson 14, Lesson 15

Back to glossary top ↑

API version

The Vulkan core version requested by the application and supported by the loader or device. It decides which promoted facilities may be used as core, but it does not promise every optional feature.

Appears in: Lesson 15, Lesson 28

Back to glossary top ↑

aspect ratio

The image width divided by its height. It is used when the camera maps a rectangular raster to its viewport.

Also encountered as: image aspect ratio

Appears in: Lesson 03, Lesson 19

Back to glossary top ↑

B

BLAS

Bottom-level acceleration structure: an opaque Vulkan structure that contains geometry for one or more related primitives, commonly a mesh.

Also encountered as: bottom-level acceleration structure

Appears in: Lesson 27

Back to glossary top ↑

bounding box

A simple volume used to decide whether a more detailed object or group could be hit.

Also encountered as: axis-aligned bounding box, AABB

Appears in: Lesson 14

Back to glossary top ↑

bounds check

A test that rejects an index or invocation coordinate outside the valid extent of a resource. Dispatching extra edge invocations is safe only when those invocations cannot perform an out-of-range access.

Also encountered as: bounds guard, edge guard

Appears in: Lesson 18

Back to glossary top ↑

buffer device address

A device-visible numeric address obtained for suitably created and allocated buffer storage, used by features including acceleration-structure builds.

Also encountered as: BDA

Appears in: Lesson 27

Back to glossary top ↑

BVH

Bounding volume hierarchy: a tree that groups objects inside bounds so that many primitive tests can be skipped.

Also encountered as: bounding volume hierarchy

Appears in: Lesson 14

Back to glossary top ↑

C

C++

The host programming language used by the Vulkan application listings in Part II. C++ creates objects, records commands and submits work; the compiled shader stages remain separate device programs.

Also encountered as: CPP

Appears in: Lesson 18, Lesson 21

Back to glossary top ↑

callable shader

An optional ray-tracing pipeline shader invoked explicitly from another ray-tracing shader for application-defined work. It does not trace a ray merely because it is callable.

Also encountered as: callable stage

Appears in: Lesson 28

Back to glossary top ↑

Canvas 2D

The browser drawing interface used by Part I to display the raster and laboratory diagrams. It receives values calculated by the course code; it does not choose the ray, hit or colour for the renderer.

Also encountered as: canvas, Canvas 2D API

Appears in: Lesson 01, Lesson 04, Lesson 14, Lesson 20

Back to glossary top ↑

ceiling division

Integer division rounded upwards, used to choose enough workgroups to cover an extent that is not an exact multiple of the local size.

Also encountered as: divide and round up

Appears in: Lesson 18

Back to glossary top ↑

colour channel

One component of a stored or calculated colour, such as red, green, blue or alpha. The meaning and numeric representation of a channel depend on the selected format and colour encoding.

Also encountered as: color channel, colour component, color component

Appears in: Lesson 01

Back to glossary top ↑

committed intersection

The ray-query candidate finally accepted as the query result after traversal and any application-controlled confirmation. A query may finish without one.

Also encountered as: committed hit

Appears in: Lesson 27

Back to glossary top ↑

control-flow divergence

The condition in which shader invocations following different branches or loop counts cannot execute the same instruction path together throughout that region.

Appears in: Lesson 25

Back to glossary top ↑

coordinate space

A coordinate system relative to a stated origin and basis. A position or direction cannot be compared safely with another until both are known to use compatible spaces.

Also encountered as: coordinate spaces, coordinate system

Appears in: Lesson 01, Lesson 06, Lesson 07, Lesson 10

Back to glossary top ↑

D

degenerate triangle

A triangle whose vertices do not define a non-zero-area surface, for example because they are collinear or repeated. Rejecting its intersection safely does not repair the invalid geometry.

Also encountered as: triangle degeneracy

Appears in: Lesson 10, Lesson 24

Back to glossary top ↑

denominator

The value below a fraction line. In the ray-plane test it measures directional alignment with the plane normal and must not be zero.

Appears in: Lesson 09

Back to glossary top ↑

descriptor pool

A Vulkan object from which descriptor sets are allocated. Its sizes reserve descriptor capacity; the pool does not decide which resources the allocated sets will later reference.

Appears in: Lesson 17, Lesson 19, Lesson 24

Back to glossary top ↑

descriptor type

The declared category of resource access at a descriptor binding, such as a uniform buffer, storage buffer or storage image. Host updates and shader declarations must agree with it.

Also encountered as: descriptor types

Appears in: Lesson 17

Back to glossary top ↑

descriptor update

The host operation that writes a concrete buffer, image view or other resource reference into an allocated descriptor set. A layout declaration alone does not perform this association.

Appears in: Lesson 17

Back to glossary top ↑

determinant

The scalar quantity used by the course's ray-triangle test to expose orientation, scale and the parallel or degenerate case before barycentric weights are accepted.

Appears in: Lesson 10, Lesson 24

Back to glossary top ↑

device extension

A named addition exposed by a physical device and enabled when the logical device is created, unless the required functionality is available through the requested core API version.

Also encountered as: device extensions

Appears in: Lesson 15, Lesson 27

Back to glossary top ↑

device memory

Memory allocated from a Vulkan device and bound to buffers or images according to their reported requirements.

Also encountered as: VkDeviceMemory

Appears in: Lesson 16, Lesson 28

Back to glossary top ↑

device-local memory

A memory property indicating storage intended for efficient device access. It does not imply that the host can map the allocation directly.

Also encountered as: device local memory

Appears in: Lesson 16, Lesson 21, Lesson 26

Back to glossary top ↑

display encoding

The deliberate conversion from calculated linear colour to the non-linear representation expected by a display or display-oriented image format. Applying it twice is as wrong as omitting it.

Also encountered as: display transfer, gamma encoding, gamma-encoded

Appears in: Lesson 13, Lesson 14, Lesson 20, Lesson 22, Lesson 26

Back to glossary top ↑

E

execution dependency

A synchronisation relationship that constrains when specified device operations may execute relative to one another.

Appears in: Lesson 18

Back to glossary top ↑

extension directive

A shader-source instruction, such as GLSL's #extension line, that asks the shader compiler to enable language support. It is not a Vulkan instance extension, device extension or enabled device feature.

Also encountered as: shader extension directive, #extension

Appears in: Lesson 27

Back to glossary top ↑

F

finite precision

The fact that a computer number has a limited representation and therefore rounds many real values. A tolerance is a scale-dependent policy for handling that limit, not evidence that two mathematical quantities were exactly equal.

Also encountered as: finite-precision

Appears in: Lesson 03, Lesson 04, Lesson 06, Lesson 08, Lesson 11

Back to glossary top ↑

flush mapped memory

The operation required for relevant host writes to non-coherent mapped device memory before those writes can follow the host-to-device visibility route. Unmapping the allocation is not an implicit flush.

Also encountered as: vkFlushMappedMemoryRanges, mapped-memory flush

Appears in: Lesson 19, Lesson 21

Back to glossary top ↑

format features

Capabilities reported for a particular Vulkan format and tiling combination, such as whether that format may be used for storage-image operations. A format name alone does not establish support for every use.

Appears in: Lesson 26

Back to glossary top ↑

frames in flight

Submitted frames whose work may overlap because each uses the resources and synchronisation required to avoid premature reuse.

Appears in: Lesson 26

Back to glossary top ↑

Fresnel

The angle-dependent division of light between reflection and transmission at a boundary.

Also encountered as: Fresnel reflection, Fresnel effect

Appears in: Lesson 11, Lesson 12

Back to glossary top ↑

G

global invocation ID

The three-dimensional identifier available to a shader invocation after dispatch. In the compute renderer, its x and y components select the candidate output texel.

Appears in: Lesson 18

Back to glossary top ↑

H

half vector

The normalised direction halfway between the light direction and view direction, used for a compact specular model.

Appears in: Lesson 07

Back to glossary top ↑

hit group

A ray-tracing pipeline group that associates the compatible closest-hit, any-hit and, for procedural geometry, intersection shaders selected for a class of hits.

Also encountered as: hit shader group

Appears in: Lesson 28

Back to glossary top ↑

HLSL

Microsoft's high-level shader language. An appropriate compiler can translate HLSL into Vulkan-targeted SPIR-V, so choosing HLSL changes source syntax and tooling rather than the Vulkan module format consumed by the application.

Also encountered as: High Level Shading Language

Appears in: Lesson 17

Back to glossary top ↑

host-coherent memory

Host-visible memory for which explicit mapped-memory flush and invalidation calls are not required to manage host-domain availability and visibility. It does not remove the execution and completion relationships required between host and device accesses.

Appears in: Lesson 19

Back to glossary top ↑

host-visible memory

Device memory that the host is permitted to map into its address space. Visibility to the host does not by itself make the memory device local or coherent.

Appears in: Lesson 19, Lesson 20

Back to glossary top ↑

I

image acquisition

The swapchain operation that supplies an image index for the next frame and signals the requested synchronisation object when that image may be used according to the acquire operation.

Appears in: Lesson 18

Back to glossary top ↑

image format

The declared organisation and interpretation of an image's texel components, including component widths and numeric representation. Support must still be checked for the intended tiling and usage.

Appears in: Lesson 16, Lesson 26

Back to glossary top ↑

image subresource

A selected part of an image identified by aspects, mip levels and array layers. Image barriers and views state which subresources they affect.

Appears in: Lesson 16

Back to glossary top ↑

image tiling

The implementation-facing arrangement selected when an image is created, commonly optimal or linear. Tiling affects supported uses and memory access; it is not the image's pixel dimensions.

Appears in: Lesson 16

Back to glossary top ↑

ImageData

The browser object used here to hold a raster as row-major RGBA channel values before it is placed on a canvas. Changing an array address and changing the colour stored at that address are different operations.

Also encountered as: canvas image data

Appears in: Lesson 01

Back to glossary top ↑

index of refraction

A material value that relates the speed of light in a medium to its speed in vacuum and controls bending at a boundary.

Also encountered as: refractive index, IOR

Appears in: Lesson 06, Lesson 12

Back to glossary top ↑

instance extension

A named addition enabled when the Vulkan instance is created, normally for facilities that connect the application to the loader, platform surface or diagnostic environment.

Also encountered as: instance extensions

Appears in: Lesson 15

Back to glossary top ↑

instance mask

An eight-bit value used during acceleration-structure traversal to include or exclude TLAS instances by bitwise comparison with the ray's cull mask.

Appears in: Lesson 27

Back to glossary top ↑

instance transform

The matrix stored with a TLAS instance that maps its referenced BLAS geometry into the instance's placed coordinate space. Moving an instance need not duplicate or rebuild its unchanged triangle records.

Also encountered as: instance transforms

Appears in: Lesson 27

Back to glossary top ↑

interpolation

Constructing an attribute between known values using weights. Barycentric interpolation changes the selected attribute while retaining the same three location weights for the triangle hit.

Also encountered as: interpolate, interpolated, interpolating

Appears in: Lesson 10, Lesson 24

Back to glossary top ↑

intersection shader

A ray-tracing pipeline shader that reports candidate intersections for procedural geometry whose hit calculation is not supplied by built-in triangle traversal.

Also encountered as: procedural intersection shader

Appears in: Lesson 18, Lesson 28

Back to glossary top ↑

intrinsic function

An operation supplied directly by a programming or shader language implementation, such as dot, cross or normalize. The compact name removes handwritten arithmetic; it does not remove the operation's input requirements.

Also encountered as: intrinsic functions, shader intrinsic

Appears in: Lesson 02

Back to glossary top ↑

invalidate mapped memory

The host cache operation required before reading relevant device writes through non-coherent mapped memory, after the device work has been made available to the host and host execution has waited appropriately.

Also encountered as: vkInvalidateMappedMemoryRanges, mapped-memory invalidation

Appears in: Lesson 19

Back to glossary top ↑

J

L

Lambertian

An ideal diffuse model whose outgoing appearance is independent of viewing direction and proportional to the clamped normal-light dot product.

Also encountered as: Lambertian reflection, Lambertian diffuse

Appears in: Lesson 07

Back to glossary top ↑

launch ID

The stage-provided three-dimensional coordinate of one ray-generation shader invocation within a trace-rays launch. It commonly selects the output pixel or sample whose primary ray is being constructed.

Also encountered as: launch identifier, launch index

Appears in: Lesson 28

Back to glossary top ↑

layout qualifier

GLSL syntax inside layout parentheses that declares facts such as descriptor set, binding, image format or compute local size. The declaration must agree with the host-created Vulkan objects; it does not create them.

Also encountered as: layout qualifiers, format qualifier

Appears in: Lesson 17

Back to glossary top ↑

linear colour

Colour values before a display transfer function has been applied. Lighting, sample accumulation and averaging are performed in this representation in the course.

Also encountered as: linear color, linear RGB

Appears in: Lesson 13, Lesson 22, Lesson 26

Back to glossary top ↑

local size

The number of compute invocations in one workgroup along x, y and z, normally declared by the shader. It is distinct from the number of workgroups launched by a dispatch.

Appears in: Lesson 18

Back to glossary top ↑

logical device

The application-created Vulkan device object that exposes enabled features, extensions, queues and child resources for one physical device.

Also encountered as: VkDevice

Appears in: Lesson 15

Back to glossary top ↑

M

mapped-memory range

A stated portion of mapped device memory used by a flush or invalidation operation. Non-coherent ranges must obey the implementation's range and atom-size requirements.

Also encountered as: VkMappedMemoryRange, mapped range

Appears in: Lesson 19

Back to glossary top ↑

memory availability

The first memory part of a Vulkan dependency: specified writes from the source operations are completed and made available for later visibility work.

Appears in: Lesson 18

Back to glossary top ↑

memory binding

The association between a created buffer or image and a compatible region of allocated device memory. Creating either object separately does not perform this association.

Appears in: Lesson 16, Lesson 24

Back to glossary top ↑

memory mapping

The operation that gives the host a pointer to a range of host-visible device memory. Mapping permits host access; it does not by itself order that access with device work or make non-coherent writes visible.

Also encountered as: mapped memory, map memory

Appears in: Lesson 19, Lesson 21

Back to glossary top ↑

memory type

A physical-device memory category combining a heap index with properties such as host visibility or device locality.

Appears in: Lesson 16

Back to glossary top ↑

memory visibility

The second memory part of a Vulkan dependency: writes made available by the source are made visible to the specified destination accesses.

Appears in: Lesson 18

Back to glossary top ↑

N

normal map

In this course, a diagnostic view that converts a surface normal's components into display colours; it is not a texture-based normal map.

Appears in: Lesson 06

Back to glossary top ↑

O

opaque geometry

Acceleration-structure geometry declared not to require an opacity decision during traversal. It is appropriate only when the application does not intend an any-hit or alpha-test rejection for that geometry.

Appears in: Lesson 27

Back to glossary top ↑

P

parallel ray

A ray whose direction has zero dot product with a plane normal, so it does not approach or leave that plane.

Appears in: Lesson 09

Back to glossary top ↑

parallel work

Independent work that can be executed concurrently, such as evaluating many pixel samples, subject to data and scheduling constraints.

Appears in: Lesson 14

Back to glossary top ↑

pipeline barrier

A recorded command that declares execution and memory dependencies, and may include image-layout transitions, between device operations.

Also encountered as: memory barrier

Appears in: Lesson 18, Lesson 21, Lesson 26

Back to glossary top ↑

pipeline stage

A named scope in Vulkan's execution model used to describe where operations occur for scheduling and dependencies. It is not necessarily one physical hardware step, and not every pipeline stage is a programmable shader stage.

Also encountered as: pipeline stages

Appears in: Lesson 17, Lesson 18, Lesson 28

Back to glossary top ↑

pNext chain

Vulkan's linked structure mechanism for attaching additional feature, property or creation structures to a base structure. Every chained structure identifies its own type and points to the next one or to null.

Also encountered as: feature chain, structure chain

Appears in: Lesson 15, Lesson 27, Lesson 28

Back to glossary top ↑

presentation surface

A Vulkan object representing the platform window or display target against which presentation support, formats and modes are queried.

Appears in: Lesson 15

Back to glossary top ↑

primitive index

The identifier of the primitive within the relevant geometry or traversal result. It names which triangle or other primitive was hit; it is not the hit distance or material by itself.

Also encountered as: primitive identity

Appears in: Lesson 22, Lesson 24, Lesson 27

Back to glossary top ↑

procedural material

A surface appearance computed from values such as position rather than read from a stored image texture.

Appears in: Lesson 09

Back to glossary top ↑

push constant

A small block of values supplied through a command buffer and made directly accessible to selected shader stages through a pipeline layout range.

Appears in: Lesson 19, Lesson 20

Back to glossary top ↑

Q

queue submission

A batch of command buffers and semaphore waits or signals sent to a queue. Submission schedules device work; it does not normally wait for that work on the host.

Appears in: Lesson 18

Back to glossary top ↑

queue-family ownership transfer

The paired release and acquire relationship used when an exclusively shared resource moves between different queue families. Command order on one family does not silently transfer ownership to another.

Also encountered as: queue ownership transfer, queue ownership transfers

Appears in: Lesson 18

Back to glossary top ↑

R

ray flags

Bit flags supplied with a hardware traversal request to alter traversal behaviour, such as culling faces or treating geometry as opaque. They do not change the ray equation.

Appears in: Lesson 27

Back to glossary top ↑

ray tracing pipeline

A Vulkan pipeline containing ray-generation and optional hit, miss, intersection and callable shader groups used with a trace-rays command.

Also encountered as: RT pipeline

Appears in: Lesson 27, Lesson 28

Back to glossary top ↑

ray-generation shader

The ray-tracing pipeline stage invoked once for each launch identifier to construct initial rays and begin tracing.

Also encountered as: raygen shader

Appears in: Lesson 28

Back to glossary top ↑

readback

A deliberate route that makes selected device results available to the host for inspection, normally through a copy, dependency, completion wait and host-visible buffer. A plausible image is not a numerical readback.

Also encountered as: read-back, debug readback

Appears in: Lesson 19, Lesson 20, Lesson 23, Lesson 24

Back to glossary top ↑

recursion depth

The number of nested ray-tracing shader calls permitted by the pipeline. Declaring a larger maximum permits deeper calls; it does not create secondary rays by itself.

Appears in: Lesson 28

Back to glossary top ↑

RGBA

RGB with a fourth alpha component. Names such as RGBA8 and RGBA16F add storage information, while RGBA alone describes only the four-component arrangement.

Also encountered as: RGBA8, RGBA16F

Appears in: Lesson 01, Lesson 16

Back to glossary top ↑

S

sampling noise

Visible variance caused by estimating a result from a finite changing sample set. It differs from structured aliasing even though adding well-chosen samples may reduce both.

Also encountered as: sample noise

Appears in: Lesson 13

Back to glossary top ↑

SBT record

One aligned shader-binding-table record containing a shader group handle and, when used, application record data. Its address and stride must obey the reported ray-tracing pipeline properties.

Also encountered as: shader binding table record

Appears in: Lesson 28

Back to glossary top ↑

SBT region

One device-address range passed to the trace-rays command for ray-generation, miss, hit or callable records. Each non-empty region states an address, stride and size under Vulkan's alignment rules.

Also encountered as: shader binding table region

Appears in: Lesson 28

Back to glossary top ↑

Schlick approximation

A compact approximation of unpolarised Fresnel reflectance based on view angle and refractive indices.

Also encountered as: Schlick's approximation

Appears in: Lesson 12

Back to glossary top ↑

scratch buffer

Temporary buffer storage supplied to an acceleration-structure build or update operation and sized from Vulkan's build requirements.

Appears in: Lesson 27

Back to glossary top ↑

self-intersection

A false immediate hit caused when a secondary ray begins numerically on or just inside the surface that created it.

Also encountered as: shadow acne

Appears in: Lesson 08, Lesson 23

Back to glossary top ↑

shader binding table

A device-addressed buffer of aligned shader-group records that selects ray-generation, miss, hit and callable groups for a trace-rays command.

Also encountered as: SBT

Appears in: Lesson 28

Back to glossary top ↑

shader built-in

A stage-defined shader input or output supplied by the execution environment, such as a global invocation ID or ray launch ID. It is not fetched through an application descriptor binding.

Also encountered as: shader built-ins, built-in input, built-ins

Appears in: Lesson 17, Lesson 27, Lesson 28

Back to glossary top ↑

shader call

A nested invocation from one ray-tracing shader to another through a trace or callable operation. Pipeline recursion limits permit such calls; they do not create them automatically.

Also encountered as: shader calls

Appears in: Lesson 28

Back to glossary top ↑

shader compiler

A tool that translates human-readable shader source into a target such as Vulkan SPIR-V and reports source or target errors. Successful compilation does not establish runtime feature support or agreement with the host resource layout.

Also encountered as: glslc, glslangValidator, DXC, slangc

Appears in: Lesson 17, Lesson 20

Back to glossary top ↑

shader entry point

A named shader function selected for one pipeline stage, such as main in the course examples. A module may contain code, but the pipeline stage states which entry point and stage use are intended.

Also encountered as: entry point, shader entry points

Appears in: Lesson 17

Back to glossary top ↑

shader group

A ray-tracing pipeline record that associates one general shader or a compatible set of hit shaders for later selection through the shader binding table.

Appears in: Lesson 28

Back to glossary top ↑

shader group handle

Implementation-provided bytes that identify a ray-tracing pipeline shader group when copied into a shader-binding-table record. The bytes are obtained from the created pipeline rather than invented by the application.

Appears in: Lesson 28

Back to glossary top ↑

shader interface

The agreement between host-created layouts and shader declarations for descriptors, push constants, buffer members and stage inputs or outputs.

Appears in: Lesson 06, Lesson 17

Back to glossary top ↑

shader language

A human-readable language used to express graphics or compute shader work. GLSL, HLSL and Slang can target Vulkan, while Vulkan's traditional shader-module route consumes their compiled SPIR-V rather than the source text.

Also encountered as: shader languages, shading language, shading languages

Appears in: Lesson 02, Lesson 17

Back to glossary top ↑

shader source

The human-readable program supplied to a shader compiler. Keeping source and the compiler command permits the SPIR-V module input to be reproduced rather than treated as an unexplained binary.

Also encountered as: shader source code

Appears in: Lesson 17

Back to glossary top ↑

shader stage

One programmable responsibility in a pipeline, such as compute, ray generation, miss or closest hit. A shader stage is code selected for that responsibility; a pipeline stage is the wider Vulkan execution-scope term.

Also encountered as: shader stages

Appears in: Lesson 11, Lesson 17, Lesson 27, Lesson 28

Back to glossary top ↑

Slang

A high-level shader language and toolchain with an HLSL-related syntax and facilities for reusable shader code. It can emit Vulkan-targeted SPIR-V, so Vulkan still receives a compiled module representation rather than Slang source.

Also encountered as: Slang shader language

Appears in: Lesson 17

Back to glossary top ↑

Snell's law

The relationship between incident angle, transmitted angle and the two refractive indices at a boundary.

Also encountered as: Snell law

Appears in: Lesson 12

Back to glossary top ↑

spatial aliasing

Structured image error produced when the sample pattern cannot represent or distinguish spatial variation in the scene signal. Blurring the result can hide an edge but cannot recover visibility that was never sampled.

Also encountered as: aliasing

Appears in: Lesson 09, Lesson 13

Back to glossary top ↑

SPIR-V

The binary intermediate language consumed by Vulkan shader modules for the traditional Vulkan shader ingestion path.

Also encountered as: SPIRV

Appears in: Lesson 17, Lesson 28

Back to glossary top ↑

sRGB

A standard non-linear colour encoding used for display-oriented values. When an sRGB image format performs the relevant conversion, the shader must not apply the same display encoding a second time.

Also encountered as: SRGB

Appears in: Lesson 22

Back to glossary top ↑

stage mask

The part of a Vulkan dependency that identifies where in device execution the source or destination operations occur. It answers where the relevant access happens, while the access mask answers what kind of memory access it is.

Also encountered as: stage masks, VkPipelineStageFlags2

Appears in: Lesson 18

Back to glossary top ↑

stride

The byte distance from the start of one array element or table record to the start of the next. It includes required padding and must satisfy the layout or device alignment contract.

Also encountered as: record stride, array stride

Appears in: Lesson 21, Lesson 24, Lesson 28

Back to glossary top ↑

suballocation

A region assigned from a larger device-memory allocation and bound to one resource at an offset satisfying that resource's size, alignment and memory-type requirements.

Appears in: Lesson 16

Back to glossary top ↑

swapchain image

An image provided by a swapchain for presentation. The application obtains its handle and uses it according to the swapchain's format, usage, acquisition and presentation rules rather than creating it independently.

Appears in: Lesson 16, Lesson 18

Back to glossary top ↑

Synchronization2

The Vulkan synchronisation interface used by this course. Introduced by VK_KHR_synchronization2 and promoted to Vulkan 1.3, it places stage and access masks together in barrier structures used by commands such as vkCmdPipelineBarrier2. It makes a dependency clearer; it does not infer one.

Also encountered as: synchronisation2, synchronization 2, synchronisation 2, sync2, VK_KHR_synchronization2

Appears in: Lesson 15, Lesson 18

Back to glossary top ↑

T

tangent space

A local surface coordinate space formed around tangent, bitangent and normal directions, commonly used to interpret texture normal maps. It is distinct from displaying the geometric normal directly as colour.

Also encountered as: tangent-space

Appears in: Lesson 06

Back to glossary top ↑

temporal accumulation

Combining sample contributions produced across successive frames while the represented camera and scene state remain compatible.

Appears in: Lesson 26

Back to glossary top ↑

timestamp query

A query that records implementation timestamp values at supported pipeline points so elapsed device work can be measured within the timestamp validity rules.

Appears in: Lesson 28

Back to glossary top ↑

TLAS

Top-level acceleration structure: an opaque Vulkan structure containing instances that reference bottom-level acceleration structures and supply transforms and instance data.

Also encountered as: top-level acceleration structure

Appears in: Lesson 27, Lesson 28

Back to glossary top ↑

total internal reflection

The case in which no real transmitted direction exists and all of the considered contribution reflects.

Also encountered as: TIR

Appears in: Lesson 12

Back to glossary top ↑

transfer operation

A Vulkan device operation that copies, clears, fills or otherwise transfers resource data. It has stated source and destination uses and participates in execution and memory dependencies like other device work.

Also encountered as: transfer operations, device transfer

Appears in: Lesson 18, Lesson 21

Back to glossary top ↑

U

uniform buffer

A descriptor-accessed buffer containing read-only shader parameters laid out according to the shader interface contract.

Also encountered as: UBO

Appears in: Lesson 19, Lesson 22

Back to glossary top ↑

UNORM

Unsigned normalised storage: an unsigned integer range interpreted as floating-point values from zero to one. Eight stored bits still provide only 256 representable values for that channel.

Also encountered as: unsigned normalised, unsigned normalized

Appears in: Lesson 22

Back to glossary top ↑

usage flags

Bits supplied when a Vulkan resource is created to declare its intended operations, such as storage-image writes or transfer source use. A later operation is invalid if the required use was not declared and supported.

Appears in: Lesson 16

Back to glossary top ↑

V

validation layer

A Vulkan layer, commonly VK_LAYER_KHRONOS_validation, that checks API use and reports diagnostic messages without replacing application correctness tests.

Also encountered as: VK_LAYER_KHRONOS_validation

Appears in: Lesson 15

Back to glossary top ↑

Vulkan feature

A boolean capability reported by a physical device and explicitly enabled for a logical device when the application intends to use it. An API version or extension name alone does not enable the feature.

Also encountered as: device feature, device features

Appears in: Lesson 15

Back to glossary top ↑

Vulkan handle

The value by which the application refers to a Vulkan object. A handle identifies the object; it is not the object's memory contents and does not by itself prove that required backing memory or state exists.

Appears in: Lesson 16

Back to glossary top ↑

Vulkan instance

The top-level Vulkan object that connects the application to the loader and enabled instance layers and extensions.

Also encountered as: VkInstance

Appears in: Lesson 15

Back to glossary top ↑

Vulkan loader

The component that exposes Vulkan entry points to the application, reports supported instance capability and locates available Vulkan implementations and layers.

Appears in: Lesson 15

Back to glossary top ↑

Vulkan SDK

The development package that supplies Vulkan headers, libraries, validation components and tools used to build and inspect applications. Installing the SDK does not add a device feature that the implementation and hardware do not support.

Also encountered as: SDK

Appears in: Lesson 17

Back to glossary top ↑

W

workgroup count

The x, y and z numbers supplied to a compute dispatch. Multiplying these counts by the shader's local size gives the full grid of launched invocations.

Appears in: Lesson 17, Lesson 18

Back to glossary top ↑