Stencil

17Vulkan——缓冲区资源和RenderPass

本秂侑毒 提交于 2020-08-14 18:04:03
1.缓冲区资源 缓冲区资源以 线性方式 表示连续的数据阵列。 缓冲区资源通常用来存储属性数据信息,如顶点坐标,纹理坐标,关联颜色等。 Vulkan 中的缓冲区资源由 VkBuffer 对象表示,与视图形式(图像视图,VkImageView)表示的图像资源(VkImage)不同,缓冲区资源可以 直接用作顶点数据的源 ,或者可以通过着 色器利用描述符进行访问 。 需要把它们 显式转换 为缓冲区视图(VkBufferView)以允许着色器以格式化的格式使用缓冲区数据的内容。 使用 Vulkan API 创建缓冲区资源(VkBuffer)的步骤说明 : 创建缓冲区对象 :使用 vkCreateBuffer()API 创建缓冲区对象(VkBuffer)。 此 API 会用到 VkCreateBufferInfo 结构对象,该对象指定了用于创建缓冲区对象的一些重要缓冲区元数据。 缓冲对象的 VkCreateBufferInfo 包含必要的内存信息,例如格式,用法,大小,创建标志等。 这个信息用于从设备分配物理内存。 您可以认为在此初始阶段的缓冲区对象没有后端的内存支持,即没有分配实际的物理存储。 创建缓冲区对象并不意味着物理分配在幕后自动完成;必须手动完成,这会在下一步中介绍。 Allocating buffer memory 分配缓冲内存 : 获取内存需求:使用

Springboot集成flowable modeler 免登录,并且查询用户/用户组改为自己系统数据

时光总嘲笑我的痴心妄想 提交于 2020-08-10 19:55:55
之前画流程图都是用tomcat启动flowable modeler,但是这样启动就不能在分配任务用户/用户组的时候查询自己系统里的数据。所以现在需要把flowable modeler集成到项目里来。 之前自己也搜索了很多文章,都感觉不是很清晰,可能也是因为我刚接触不久。现在自己集成好了之后,记录一下自己学习的结果。 首先需要创建一个springboot应用,pom文件中引入相关jar包: <properties> <java.version>1.8</java.version> <flowable.version>6.4.1</flowable.version> <lombok.version>1.18.0</lombok.version> <fastjson.version>1.2.9</fastjson.version> </properties> < dependencyManagement > < dependencies > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-dependencies </ artifactId > < type > pom </ type > < scope > import </ scope > </

AssetBundle包加载的场景会变暗

不想你离开。 提交于 2020-08-07 12:33:59
1)AssetBundle包加载的场景会变暗 2)关于URP的合批问题 3)两次生成的AssetBundle包不一致 4)如何彻底卸载AssetBundle占用的内存 5)renderFrameInterval >1 导致半透明错误的额外叠加 这是第201篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。 UWA 问答社区: answer.uwa4d.com UWA QQ群2:793972859(原群已满员) AssetBundle Q:我发现在项目工程下加载场景AssetBundle包会变暗,但是在打包工程和空工程下加载是正常的,不知道有没有人遇到过这个问题呢? A:原因是ColorSpace不一致,我突然想到曾经看到过Gamma和Liner不一致的问题,试了下发现能够解决这里的问题,所以只要改成Gamma就行了。 感谢题主WindowsXPC@UWA问答社区提供了回答,欢迎大家转至社区交流: https://answer.uwa4d.com/question/5e9e76e1979400061e545049 Rendering Q:这几天在尝试使用URP,使用的渲染流程是3个Pass,第一个使用URP默认Pass渲染角色,第二个通过Renderer Features进行Stencil的Mask

OpenGL 4.6 能取到的398个扩展 记录一下

自作多情 提交于 2020-08-06 08:55:00
0 : GL_AMD_multi_draw_indirect 1 : GL_AMD_seamless_cubemap_per_texture 2 : GL_AMD_vertex_shader_viewport_index 3 : GL_AMD_vertex_shader_layer 4 : GL_ARB_arrays_of_arrays 5 : GL_ARB_base_instance 6 : GL_ARB_bindless_texture 7 : GL_ARB_blend_func_extended 8 : GL_ARB_buffer_storage 9 : GL_ARB_clear_buffer_object 10 : GL_ARB_clear_texture 11 : GL_ARB_clip_control 12 : GL_ARB_color_buffer_float 13 : GL_ARB_compatibility 14 : GL_ARB_compressed_texture_pixel_storage 15 : GL_ARB_conservative_depth 16 : GL_ARB_compute_shader 17 : GL_ARB_compute_variable_group_size 18 : GL_ARB_conditional_render

2.5 Cesium视域分析的实现

北城余情 提交于 2020-05-02 02:52:00
Cesium 视域分析 好玩的东西大家都喜欢,但好玩又难嚼的东西就总让人心痒痒。视域分析应该说是GIS空间分析里比较经典又实用很广的功能,理论起来很简单,就是看得见与看不见的区分,上面实现的功能看得见绿色表示,看不见红色表示,对于工程师而已就是0与1的区分。 那么怎么来实现呢?在群里多次讨论过,为寻方便,就放这里了。 首先要明确一点,实现视域分析思路并不难,关键在于细节处理。记住这点,你就能实现它! 仅仅利用Cesium自带的API来怼出来是不太切合实际的,看过有人画面来贴建筑,示意线也画出来了,但真的好无趣,最后只能是浪费大量时间。我们地走正路,从图形学的角度出发,实现视域分析大方向可以通过模板和深度来实现,可能有的人眼前一亮,0与1之间的区分,模板不是最直接的选择吗,但从笔者实践来看,模板在Cesium里实现起来可没有深度那么来得方便,综合最终效果而言,个人也比较推荐用深度来实现比较好。 好了,大政方针确定了,开始实施。 我们视域分析的结果,不管可见与不可见,最终像素它都是在所分析对应的观察视角的CVV里,之外的像素是不用关心的,因此先将相机移到我们的观察视角,正常获取一张深度图(至于如何在Cesium里获取到深度图可参照另外一篇文章:Cesium渲染流程 https://www.cnblogs.com/GISCesium/p/10420492.html )

Unity CommandBuffer的一些学习整理

ⅰ亾dé卋堺 提交于 2020-04-21 05:43:04
1.前言 近期在整理CommandBuffer这块资料,之前的了解一直较为混乱。 算不上新东西了,但个人觉得有些时候要比加一个摄像机再转RT廉价一些,至少省了深度排序这些操作。 本文使用两个例子讲解CommandBuffer如何使用,但在此之前稍稍总结一下官方CommandBuffer的案例。 2.官方案例 案例地址如下: https://blogs.unity3d.com/cn/2015/02/06/extending-unity-5-rendering-pipeline-command-buffers/ 文章尾部有Demo下载链接。 该demo包含3个例子。 第一个例子BlurryRefraction,和新建摄像机渲染RT类似,在渲染透明对象之前渲染屏幕,并做模糊处理。然后丢给shader转换到对应的UV空间,转换的代码和Grab一样不做赘述。 第二个例子DeferredCustomLights,这里灯光的容器模型和第三个例子的贴花容器模型差不多,都是为了空间剔除而建立的模型,灯光部分直接拿到GBuffer的数据进行绘制。 第三个例子DeferredDecals,和第二个差不多,容器模型直接是方块,而方块的投影方式又有点像地形的三方向投影。 3.学习案例 3.1 - 在延迟渲染环境下创建一个standard小球 总的来说坑还是蛮多的,unity的pbr这块本身和管线有所交互

WebGPU学习(三):MSAA

狂风中的少年 提交于 2020-04-18 10:07:03
大家好,本文学习MSAA以及在WebGPU中的实现。 上一篇博文 WebGPU学习(二): 学习“绘制一个三角形”示例 下一篇博文 WebGPU学习(四):Alpha To Coverage 学习MSAA 介绍 MSAA(多重采样抗锯齿),是硬件实现的抗锯齿技术 动机 参考 深入剖析MSAA : 具体到实时渲染领域中,走样有以下三种: 1.几何体走样(几何物体的边缘有锯齿),几何走样由于对几何边缘采样不足导致。 2.着色走样,由于对着色器中着色公式(渲染方程)采样不足导致。比较明显的现象就是高光闪烁。 3.时间走样,主要是对高速运动的物体采样不足导致。比如游戏中播放的动画发生跳变等。 这里讨论几何体走样。 如上图所示,我们要绘制一个三角形。它由三个顶点组成,红线范围内的三角形是片元primitive覆盖的区域。 primitive会被光栅化为fragment,而一个fragment最终对应屏幕上的一个像素,如图中的小方块所示。 gpu会根据像素中心的采样点是否被pritimive覆盖来判断是否生成该fragment和执行对应的fragment shader。 图中红色的点是被覆盖的采样点,它所在的像素会被渲染。 下图是最终渲染的结果,我们看到三角形边缘产生了锯齿: 原理 MSAA通过增加采样点来减轻几何体走样。 它包括4个步骤: 1.针对采样点进行覆盖检测 2

Taro Next H5 跨框架组件库实践

只谈情不闲聊 提交于 2020-04-14 13:39:33
【推荐阅读】微服务还能火多久?>>> 作者:凹凸曼 - JJ Taro 是一款多端开发框架。开发者只需编写一份代码,即可生成各小程序端、H5 以及 React Native 的应用。 Taro Next 近期已发布 beta 版本,全面完善对小程序以及 H5 的支持,欢迎体验! 背景 Taro Next 将支持使用多框架开发 过去的 Taro 1 与 Taro 2 只能使用 React 语法进行开发,但下一代的 Taro 框架对整体架构进行了 升级 ,支持使用 React、Vue、Nerv 等框架开发多端应用。 为了支持使用多框架进行开发,Taro 需要对自身的各端适配能力进行改造。本文将重点介绍对 Taro H5 端组件库 的改造工作。 Taro H5 Taro 遵循以微信小程序为主,其他小程序为辅的组件与 API 规范。 但浏览器并没有小程序规范的组件与 API 可供使用,例如我们不能在浏览器上使用小程序的 view 组件和 getSystemInfo API。因此我们需要在 H5 端实现一套基于小程序规范的组件库和 API 库。 在 Taro 1 和 Taro 2 中,Taro H5 的组件库使用了 React 语法进行开发。但如果开发者在 Taro Next 中使用 Vue 开发 H5 应用,则不能和现有的 H5 组件库兼容。 所以本文需要面对的核心问题就是: 我们需要在

Taro Next H5 跨框架组件库实践

二次信任 提交于 2020-04-14 13:28:30
【推荐阅读】微服务还能火多久?>>> 作者:凹凸曼 - JJ Taro 是一款多端开发框架。开发者只需编写一份代码,即可生成各小程序端、H5 以及 React Native 的应用。 Taro Next 近期已发布 beta 版本,全面完善对小程序以及 H5 的支持,欢迎体验! 背景 Taro Next 将支持使用多框架开发 过去的 Taro 1 与 Taro 2 只能使用 React 语法进行开发,但下一代的 Taro 框架对整体架构进行了 升级 ,支持使用 React、Vue、Nerv 等框架开发多端应用。 为了支持使用多框架进行开发,Taro 需要对自身的各端适配能力进行改造。本文将重点介绍对 Taro H5 端组件库 的改造工作。 Taro H5 Taro 遵循以微信小程序为主,其他小程序为辅的组件与 API 规范。 但浏览器并没有小程序规范的组件与 API 可供使用,例如我们不能在浏览器上使用小程序的 view 组件和 getSystemInfo API。因此我们需要在 H5 端实现一套基于小程序规范的组件库和 API 库。 在 Taro 1 和 Taro 2 中,Taro H5 的组件库使用了 React 语法进行开发。但如果开发者在 Taro Next 中使用 Vue 开发 H5 应用,则不能和现有的 H5 组件库兼容。 所以本文需要面对的核心问题就是: 我们需要在

webgl——混合与模板测试

人盡茶涼 提交于 2019-12-26 18:46:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 今天研究了一个混合与模板测试相结合的案例,这里做以总结。 案例中一个篮球在地板上不断弹起并且落下,这里主要涉及到了两项技术:混合与模板测试。首先篮球在地板上反射出来的镜像篮球就是通过混合技术实现的,为了让镜像体在运动脱离地板时消失,实现真实的效果,还需要加入模板测试。 首先介绍他们的绘制顺序 1.开启模板测试,关闭深度检测 2.绘制实体地板 3.设置模板测试参数 4.绘制镜像球 ,禁用模板测试 5.开启混合 6.设置混合参数,绘制半透明地板 7.关闭混合,开启深度检测 看到这里是不是有些头晕了,不过没关系,我们来一起理一理其中的思路。 首先关于深度检测:深度检测在此案例中不需要使用,我们完全可以根据绘制的顺序来确定他们的显示顺序,当不开启深度检测时,会根据我们绘制的顺序来决定谁会覆盖谁。 其次是模板测试,先清除上一次绘制产生的模板缓冲,使得缓冲中所有值为0,然后给地板设置模板缓冲的参数,其中设置 glStencilFunc(GL_ALWAYS, 1, 1); 这样一来,地板的像素的“模板值”为1,而其它地方像素的“模板值”为0。glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);这个函数第一个参数是未通过模板测试时的操作,第二个参数是通过模板测试,未通过深度测试的操作