steps3D - Статьи
ФАКи и CodeSnippets

Code Snippets.



Vulkan

Расширение VK_EXT_dynamic_rendering

Расширение VK_KHR_buffer_device_address или для буферов наконец завезли адреса

Механизм запросов (queries) в Vulkan

Разбор выравнивания буферов (UBO, SSBO) в Vulkan

Vulkan с классами - пишем deferred renderer

Анимация системы частиц при помощи вычислительных шейдеров в Vulkan

Программирование Vulkan при помощи классов - работа с текстурами

Программирование Vulkan при помощи классов

Vulkan with classes

Библиотека VMA (Vulkan Memory Allocator)

Особенности систем координат в Vulkan, отличия от OpenGL

Рендеринг треугольника во внеэкранный буфер

Шейдеры, pipeline layout, compute pipeline

Vulkan. Работа с памятью и буферами

Vulkan. Устройства

Vulkan. Начало



3D-графика

Visibility Buffer

Mesh-шейдеры и расширение NV_mesh_shader

Вихревой шум (curl noise)

Хэш-таблицы на GPU (CUDA и GLSL)

Реализация эффекта motion blur

Иерархический z-буфер: создание и использование для определения видимости

Indirect-рендеринг

Битоническая сортировка при помощи вычислительных шейдеров

Рендеринг поверхности под дождем

Рендеринг полос дождя

Непериодическое повторение текстуры

Проективное текстурирование

Скелетная анимация с ASSIMP

Трехмерные SDF и операции над ними

Рендеринг кожи

Physically Based Rendering

Что такое гамма ?

Текстуры движения

Detail normal maps

Using modern OpenGL with python

Order-Independent Transparency в OpenGL

Расширение ARB_bindless_texture

Вычислительные шейдеры в OpenGL

Расширение ARB_multi_draw_indirect

Работа с библиотекой GLFW

Расширение ARB_vertex_attrib_binding

Расширение ARB_multi_bind

Использование спецификатора layout в GLSL

ARB_shader_image_load_store

ARB_shader_storage_buffer_object

Расширение ARB_buffer_storage

Расширение ARB_texture_storage

Алгоритмы тесселляции треугольников

Расширение ARB_shader_storage_buffer_object

Расширение ARB_shader_image_load_store

Расширение ARB_debug_output

Расширение ARB_buffer_storage

Двулучевая функция отражательной способности (BRDF)

Атомарные счетчики в OPenGL. Расширение ARB_atomic_counters

ARB_separate_shader_objects

Расширение GLSL в последних версиях OpenGL .

Дополнительные возможности OpenGL 3/4 .

Transform feedback в OpenGL 3.3 и 4.1 .

Нестандартные форматы float'ов в OpenGL.

Текстурные форматы в OpenGL 3.3 и выше.

Тесселляция в современном OpenGL

Геометрические шейдеры в OpenGL 3.3

Uniform-буфера и uniform-блоки в OpenGL 3.3

Расширение EXT_direct_state_access

Работа с OpenGL 3.3 с использованием библиотек freeglut и glew

Расширения по работе с текстурами, вошедшие в последние версии OpenGL

Расширения ARB_map_buffer_range и ARB_copy_buffer

Расширение ARB_sync

Асинхронные запросы в OpenGL. Расширения ARB_occlusion_query2 и ARB_timer_query

Кривая и код Мортона. Space filling curves

Расширение ARB_vertex_array_object

Расширение ARB_sampler_objects

Light Pre-Pass Rendering

Проверка двух Oriented Bounding Box на пересечение

Расширение ARB_get_program_binary

Модели освещения

Работаем с WebGL

Расширение NV_transform_feedback

Расширение NV_fence

Screen-Space Ambient Occlusion

Моделирование глубины резкости. Depth Of Field (DOF).

Реализация операции scatter на GPU на примере построения гистограмм.

Получение трехмерных координат в системе наблюдателя по значениям из буфера глубины

Расширение EXT_bindable_uniform.

Deferred Shading.

Soft Particles.

Расширение EXT_texture_array.

Расширения EXT_draw_instanced и EXT_texture_buffer_object.

Работа с целочисленными текстурами и целыми числами в шейдерах.

Рендеринг воды.

Работа с библиотекой GLew.

Сортировка на GPU. Битоническая сортировка.

Работа с OpenGL и GLUT в языке Python, библиотека PyOpenGL, расширение Python'а.

Работа с библиотекой DevIL.

Рендеринг в вершинный буфер.

High Dynamic Range Rendering в OpenGL.

Variance Shadow Maps.

Использование MRT в OpenGL.

Texture rectangles.

Скелетная анимация.

Рендеринг неба.

Основы CSG.

Основы Sampling Theory.

Как в вершинном шейдере правильно преобразовывать нормали и другие вектора, "привязанные" к объекту.

Depth Peel или разложение сцены по слоям.

Рендеринг травы.

Основы программирования GPU, реализация условных конструкций на современных GPU.

Вычисление коэффициентов Френеля.

Расширение EXT_pixel_buffer_object.

Расширение EXT_framebuffer_object.

Построение теней при помощи теневых карт.

Рендеринг отражений в текстуру.

Parallax and relief mapping.

Построение теней при помощи теневых объемов.

Рендеринг меха.

Эффект сгорания объекта как в Doom 3.

Пространственные индексы (spatial index) и их использование

Реализация bumpmapping'а - построение базиса касательного пространства, быстрая нормализация векторов

Анизотропная модель освещения

Расширение ARB_vertex_buffer_object в OpenGL



Работа со звуком

Работа с библиотекой Audiere.

Программирование 3D-звука при помощи библиотеки OpenAL.

OpenAL 1.1, расширение EFX.



Нефотореалистический рендеринг (NPR)

Нефотореалистический рендеринг.

Extended cartoon shader.



Физическое и процедурное моделирование

Построение клеточных текстур.

Texture bombing.

Моделирование растений при помощи L-систем.



CUDA

Cooperative groups в CUDA

Некоторые возможности CUDA, часть 2

Некоторые возможности CUDA, часть 1

Динамический параллелизм в CUDA

Команда Shuffle и ее использование в CUDA

Работа с Unified - памятью в CUDA

Работа с библиотекой thrust в CUDA

Основы CUDA.

Программирование на CUDA (часть 2).

Спецурс по CUDA на Google Groups.

Взаимодействие CUDA и OpenGL



Программирование для Mac OS X

История и основные особенности Mac OS X

Программирование для Mac OS X, работа с ресурсами.

Язык Objective-C.

Программирование для Mac OS X, делаем калькулятор.

Программирование для Mac OS X, пишем скринсейвер.

Программирование для Mac OS X. Пишем OpenGL-приложения с использованием GLUT.

Программирование для Mac OS X. Пишем OpenGL-приложения с использованием Cocoa.

Работа с кривыми Безье в Mac OS X.

Работа с Core Image

Cocoa-Bindings

Получение эффекта плавного изменение размера и содержимого окна как в утилите System Preferences

Компиляция кода из книги по шейдерам для Mac OS X

Моя страничка по Mac OS X



Программирование под iPhone/iPod Touch



Разное

Интеграция скриптов на Lua с С++

Использование скриптового языка Lua

За что я не люблю С++.

Об использовании венгерской нотации.



Старые статьи

Фрагментные программы. Расширение ARB_fragment_program

Вершинные программы. Расширение ARB_vertex_program

Эффективные методы попиксельного учета ослабевания интенсивности источника света в зависимости от расстояния до него (distance attenuation)

Использование Р-буферов для внеэкранного рендеринга. Расширения WGL_ARB_pbuffer, WGL_ARB_pixel_format и WGL_ARB_render_texture.

Что такое z-fighting и как с ним бороться

Reflective Bumpmapping в OpenGL

Расширение NV_texture_shader в его использование в OpenGL

Работа с расширениями OpenGL в Linux

Попиксельное бликовое (specular) освещение с использованием register combiner'ов

Попиксельное диффузное освещение с использованием register combiner'ов

Работа с картами нормалей (bumpmaps)

Расширение NV_register_combiners в OpenGL

Расширение ARB_texture_env_dot3 в OpenGL и простейший попиксельный bumpmapping

Расширение ARB_texture_cube_map в OpenGL

Расширение EXT_fog_coord в OpenGL

Расширения EXT_texture_env_combine и ARB_texture_env_combine в OpenGL

Мультитекстурирование в OpenGL

Расширения EXT_texture_env_add и ARB_texture_env_add в OpenGL

Работа с расширениями OpenGL