vulkan

WebGPU学习(二): 学习“绘制一个三角形”示例

末鹿安然 提交于 2020-04-18 10:07:27
大家好,本文学习Chrome->webgpu-samplers->helloTriangle示例。 上一篇博文: WebGPU学习(一): 开篇 下一篇博文: WebGPU学习(三):MSAA 准备Sample代码 克隆 webgpu-samplers Github Repo 到本地。 (备注:当前的version为0.0.2) 实际的sample代码在src/examples/文件夹中,是typescript代码写的: 学习helloTriangle.ts 打开helloTriangle.ts文件,我们来看下init函数的内容。 首先是shader代码 const vertexShaderGLSL = `#version 450 const vec2 pos[3] = vec2[3](vec2(0.0f, 0.5f), vec2(-0.5f, -0.5f), vec2(0.5f, -0.5f)); void main() { gl_Position = vec4(pos[gl_VertexIndex], 0.0, 1.0); } `; const fragmentShaderGLSL = `#version 450 layout(location = 0) out vec4 outColor; void main() { outColor = vec4(1.0, 0.0, 0.0

WebGPU学习(四):Alpha To Coverage

*爱你&永不变心* 提交于 2020-04-18 08:23:14
大家好,本文学习与MSAA相关的Alpha To Coverage以及在WebGPU中的实现。 上一篇博文 WebGPU学习(三):MSAA 下一篇博文 WebGPU学习(五): 现代图形API技术要点和WebGPU支持情况调研 学习Alpha To Coverage 前置知识 WebGPU学习(三):MSAA 一个fragment对应一个像素 介绍 开启了MSAA和Alpha To Coverage后,fragment的alpha值(fragment shader输出的颜色的alpha值)会影响该fragment对应像素的采样点是否被覆盖。 动机 参考 乱弹纪录II:Alpha To Coverage : 原理 覆盖检测 通过 WebGPU学习(三):MSAA 对MSAA原理的介绍,我们知道gpu要经过覆盖检测的步骤,来决定哪些采样点被覆盖。没有被覆盖的采样点不会进入“解析”步骤。 覆盖检测的结果是计算出每个fragment的coverage(覆盖率)。 根据 乱弹纪录II:Alpha To Coverage 的说法,开启MSAA后,每个fragment带了一个新属性coverage(覆盖率),它是一个二进制的bit掩码mask。 以4X MSAA为例,每个fragment的coverage为xxxx,其中x为0或1。它的每一位对应像素的一个采样点sample

WebGPU学习(五): 现代图形API技术要点和WebGPU支持情况调研

﹥>﹥吖頭↗ 提交于 2020-04-18 07:43:06
大家好,本文整理了现代图形API的技术要点,重点研究了并行和GPU Driven Render Pipeline相关的知识点,调查了WebGPU的相关支持情况。 另外,本文对实时光线追踪也进行了简要的分析。这是我非常感兴趣的技术方向,也是图形学的发展方向之一。本系列后续文章会围绕这个方向进行更多的研究和实现相关的Demo。 上一篇博文: WebGPU学习(四):Alpha To Coverage 下一篇博文: WebGPU学习(六):学习“rotatingCube”示例 本文内容 前置知识 技术要点 并行 Multiple Queues 同步 多线程 内存管理 延迟渲染 Defer Shading Textureless Defer Render GPU Driven Render Pipeline Approaching zero driver overhead GPU Cull GPU Lod Hybrid Render For Real-time Ray Tracing 混合渲染 如何使用WebGPU学习和实现Ray Tracing 学习资料 其它 Bindless Texture Virtual Texture Tessellation Mesh Shader 前置知识 现代图形API包括哪些API? 包括DX12、Vulkan、Metal MVP是什么?

Can we use Vulkan with Java Activity on Android platform

左心房为你撑大大i 提交于 2020-03-21 03:46:42
问题 Currently, it seems all the Vulkan tutorials and samples use NativeActivity on Android platform. I would like to know whether we can use Vulkan with Java Activity on Android? 回答1: Yes, you can use Vulkan with your own Activity subclass. Because Android doesn't have Java-language bindings for Vulkan, you'll need to use either JNI or a third-party Java Vulkan library (which is just doing the JNI for you). Your View hierarchy will need to contain a SurfaceView, and when you get the Surfaceholder

Using pipeline barriers instead of semaphores

家住魔仙堡 提交于 2020-02-21 04:49:09
问题 I want to be sure that I understand pipeline barriers correctly. So barriers are able to synchronize two command buffers provided the source stage of the second barrier is later than the destination stage of the first barrier. Is this correct? Of course I will need to use semaphores if the command buffers execute during different iterations of the pipeline. It seems to me that synchronisation is the hardest part to grasp in Vulkan. IMO the specification isn't clear enough about it. 回答1:

Vulkan 之 Layers

江枫思渺然 提交于 2020-02-09 11:39:44
Layers 暴露给api层,不像传统图形API集成在驱动里面,开发者根据自己的需要进行开启,最终目的还是为了提高性能。 The Loader he loader is the central arbiter in the Vulkan runtime. The application talks directly to the loader and only to the loader, which then deals with enumerating and validating the layers requested, enumerating ICDs and organising them and presenting a unified interface to the application. ICD是就是不同厂商对图形API所做的驱动文件, Vulkan Loader 何时加载 ICD 驱动文件 , vulkan initialize 这篇文章详细描述了vulkan是如何初始化,以及为什么需要这么做。 那么这么做的意义是什么呢?直接调用这些函数指针不就完事了吗?恰巧vulkan的一个思想就是,去除掉验证层,那么验证层能放在何处?也就是放在这个SDK里,类似各种Graphic Debugger的实现,Vulkan有很多Validation Layer

Vulkan SDK 之 Shaders

北战南征 提交于 2020-02-07 10:28:07
Compiling GLSL Shaders into SPIR-V 1、SPIR-V 是vulkan的底层shader语言。GLSL可以通过相关接口转换为SPIR-V。 Creating Vulkan Shader Modules 来源: https://www.cnblogs.com/khacker/p/12271897.html

Vulkan SDK 之 Descriptor Set Layouts and Pipeline Layouts

不问归期 提交于 2020-02-06 17:02:57
当我们有了一个uniform buff之后,vulkan 还不知道这个信息,需要通过descriptor进行描述。 Descriptors and Descriptor Sets A descriptor is a special opaque shader variable(隐藏变量) that shaders use to access buffer and image resources in an indirect fashion. It can be thought of as a "pointer" to a resource. The Vulkan API allows these variables to be changed between draw operations so that the shaders can access different resources for each draw. A descriptor set layout is used to describe the content of a list of descriptor sets. A descriptor set is called a "set" because it can refer to an array of homogenous resources that

Vulkan SDK之 Swapchain

余生颓废 提交于 2020-02-06 15:28:42
Swapchain是一系列最终会展示给用户的图像的集合。 /* * Set up swapchain: * - Get supported uses for all queues * - Try to find a queue that supports both graphics and present * - If no queue supports both, find a present queue and make sure we have a * graphics queue * - Get a list of supported formats and use the first one * - Get surface properties and present modes and use them to create a swap * chain * - Create swap chain buffers * - For each buffer, create a color attachment view and set its layout to * color attachment */ Vulkan and the Windowing System 1、跟其他图形API不同,vulkan 将window相关的操作和图形核心的API隔离;窗口使用对应的扩展

Vulkan 学习资料汇总

青春壹個敷衍的年華 提交于 2020-02-03 01:26:16
1、知乎 Vulkan-高性能渲染 2、 Life of a triangle - NVIDIA's logical pipeline 3、 Round Robin 算法 4、 NVIDIA Developer Vulkan 5、 Vulkan SDK Tutorial 6、 Vulkan In 30 Minutes 7、 Vulkan Notes 8、 GDC 2016 Talk 9、知乎: Vulkan编程指南 10、 Shader交叉编译之梦 11、 游戏引擎随笔: 现代图形API 12、 SPIR-V 13、Khronos Vulkan Registry : vulkan specifics 14、 vulkan踩坑记 15、 Vulkan C++ examples and demos 16、 NVIDIA GameWorks Graphics Samples 来源: https://www.cnblogs.com/khacker/p/12254428.html