- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在计算着色器中实现一个算法如下
layout (local_size_x = 256) in;
和
glDispatchCompute(1, 256, 1);
在第 2 步读取临时图像之前,每个像素都要求其所有 8 个相邻像素都完成第 1 步。所以我在第 1 步和第 2 步之间放置了一个 memoryBarrier(),因为
OpenGL Programming Guide, 8th Edition
说
memory barrier functions apply globally
,不仅仅是同一个本地工作组。
bool finished;
do
{
finished = true;
for(int i = 1; i < 9; i++)
{
if(!outOfBound(p+e[i]) && lock[posi(p+e[i])] != 1)
{
finished = false;
}
}
}while(!finished);
#version 430 core
layout (local_size_x = 256) in;
const ivec2 e[9] = {
ivec2(0,0),
ivec2(1,0), ivec2(0,1), ivec2(-1,0), ivec2(0,-1),
ivec2(1,1), ivec2(-1,1), ivec2(-1,-1), ivec2(1,-1)
};
layout(std430, binding = 14) coherent buffer tag_buff
{
int tag[];
};
layout(std430, binding = 15) coherent buffer temp_buff
{
int temp[];
};
layout(std430, binding = 16) coherent buffer lock_buff
{
int lock[];
};
int posi(ivec2 point)
{
return point.y * 256 + point.x;
}
bool outOfBound(ivec2 p)
{
return p.x < 0 || p.x >= 256
|| p.y < 0 || p.y >= 256;
}
void main()
{
ivec2 p = ivec2(gl_GlobalInvocationID.xy);
int x = tag[posi(p)];
temp[posi(p)] = x;
//lock[posi(p)] = 1;
memoryBarrier();
//bool finished;
//do
//{
// finished = true;
// for(int i = 1; i < 9; i++)
// {
// if(!outOfBound(p+e[i]) && lock[posi(p+e[i])] != 1)
// {
// finished = false;
// }
// }
//}while(!finished);
// if it's black or at least one of its 8 nearby pixel is black
// set itself to black
for(int i = 0; i < 9; i++)
{
if(!outOfBound(p+e[i]) && temp[posi(p+e[i])] == 1)
{
tag[posi(p)] = 1;
}
}
}
lock
将其元素设置为1并调用memoryBarrier()后进入另一个ssbo,然后在片段着色器中加载新的ssbo并将其打印到屏幕上,从中我发现
lock
的某些元素未设置为 1。
memoryBarrier
无法通过同步内存访问来同步调用。更具体地说,究竟是什么
memoryBarrier
do 只是等待所有内存访问完成
调用中已经发生的情况 .即使它在
memoryBarrier
之前,它也不会等待尚未执行的内存访问代码完成。在源代码中。 Opengl 编程指南说
When memoryBarrier() is called, it ensures that any writes to memory that have been performed by the shader invocation have been committed to memory rather than lingering in caches or being scheduled after the call to memoryBarrier()
.这意味着,例如,假设有三个调用,如果调用 A 和 B 都为
coherent
运行了 imageStore()图像变量,然后是以下
memoryBarrier
A 或 B 将保证此 imageStore() 已更改主内存中的数据,而不仅仅是缓存。但是如果在 A 或 B 调用
memoryBarrier
时调用 C 没有运行 imageStore() ,那么这个
memoryBarrier
调用不会等待 C 运行其 imageStore()。所以
memoryBarrier
不能帮我实现算法。
最佳答案
我偶然发现了一个类似的问题。我不是专家,但我相信我找到了一个很好的解决方案。
您正确识别 memoryBarrier
必要时确保先前写入的可见性。
然而,就其本身而言 memoryBarrier
几乎没用,因为它不能确保执行顺序。所以虽然你有一个 memoryBarrier
可能有些调用在其他调用开始运行之前就已完全完成。memoryBarrier
无法使尚未发生的写入可见。
我们有 barrier
为了解决这个问题:
For any given static instance of barrier in a compute shader, all invocations within a single work group must enter it before any are allowed to continue beyond it.
barrier
不是 帮助您同步一个内的跨工作组
glDispatchCompute
调用,它只在工作组内同步。
barrier
对你的问题没有帮助,
glDispatchCompute
与适当的交错
glMemoryBarrier
调用。
glDispatchCompute
调用在它们之间形成了障碍。
glMemoryBarrier
使先前调用的写入对以后的调用可见。
关于opengl - 有什么更好的方法来同步计算着色器的所有调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24094469/
我必须在文本区域上绘制哪些选项? 我认识一些所见即所得的编辑器。我不确定他们使用的方法是什么,并且会看看他们以了解,但我知道像 tinymce 这样的事情已经存在了一段时间,所以我猜现在可能有更现代的
我在我的 woo commerce 商店页面中创建了一个子类别排序菜单。我想将链接到我现在所在页面的链接设置为红色。我对 css 没有问题,只是用 js 脚本。我怎样才能让它突出当前?这是我创建的排序
所以我使用 TextWrangler4.5.3 并主要使用 Python 编写脚本。当我编写 Python 时,我经常喜欢发表类似这样的评论:# BEGINS foo 然后是 # ENDS foo 我
我需要你的帮助! 我有一个表格,里面有行(姓名等)现在,当位于该行上的对象具有特定值时,我想为特定的 tableCells 背景着色。但我只得到它来读取这个单元格的值。但我需要阅读对象(在我的代码中称
有人知道在 uikit 中给 uiactionsheet 着色吗? 最佳答案 是的,因为它是一个 UIView(如 kmit 所述),您可以使用以下命令:addSubview,因此您可以添加自己的背景
在 vba 中,我想从工作表中的单元格中读取颜色来为条形图中的特定条形着色。我的问题是我的颜色格式为 4F9F92,但要在 makro 中读取它,我需要使用单元格中的 excel 颜色代码 40762
我正在尝试绘制一个 geom_histogram,其中条形图由渐变着色。 这就是我想要做的: library(ggplot2) set.seed(1) df <- data.frame(id=past
我正在构建一个带有 shiny 的应用程序,并使用与 Shiny gallery ( http://shiny.rstudio.com/gallery/slider-bar-and-slider-ra
在 iOS 6 和 xcode 4 中,我有这个: https://dl.dropboxusercontent.com/u/60718318/photo.PNG使用代码可以轻松创建 [editButt
我正在向我的 iPhone UI 添加自定义按钮,并希望使它们具有 Apple 应用程序中的玻璃外观。我有一个很好的默认玻璃图像,但我不想为我想要的每种色调(红色、绿色、蓝色等)都有一个单独的图像。
我到处寻找但没有找到解决方案。我有图像 1。如何以编程方式使用渐变对它们进行着色以获得图像 2 和 3?以下是这些图像: 我通过 Photoshop 应用到它们的色调是简单的 2 色线性渐变。 我的问
有没有办法告诉 OS X 自动设置 NSToolbarItem 的样式/色调? 我通过 IB/Xcode 添加了一个“图像工具栏项”,并将图标设置为黑色 PDF as described in the
我试图区分列范围图表上的多种类型的数据。问题是我希望能够按多个标准对它们进行分组。 我可以轻松地为不同的列着色,从而解决一个问题,但我希望能够根据我传递到图表的数据,为 xAxis 上的类别(图表是倒
有人在编译模式 Emacs 中添加了对 ansi-color 的支持吗?如果是这样,颜色写入程序必须检查什么属性/属性才能确保其事件终端支持 ANSI 转义着色。 最佳答案 已经有一个函数可以将颜色应
我正在尝试实现 Phong 着色模型,但我不确定如何选择光源。更具体地说,我不明白光源应该是什么样子。它应该是vec3吗?或者也许是我在 Java 代码中定义的矩阵?另外,如果我们假设我希望相机作为光
我有 2 个 dhtmlxSidebars,就像示例中一样 here如何为嵌套背景设置不同的背景颜色?如果我添加CSS .dhxsidebar_side { background-color:
我有一个 JTable,每行都根据最后一列中的值着色。 但是,当我单击标题对行进行排序时,颜色不会跟随行。 我尝试在 JTable 鼠标退出事件上调用我的“colourTable”方法(我知道 Hac
geom_hline 似乎忽略了美观,我错过了什么还是这是一个错误? df session 信息: R version 3.4.4 (2018-03-15) Platform: x86_64-pc-
这个问题已经有答案了: How to draw a BufferedImage with a color tint (1 个回答) 已关闭 8 年前。 如何将通过此处的图标着色为不同的颜色?假设我想拍
我想为除我点击的那个之外的所有 div 着色。在我的代码中它有效,但只有一次。如果我点击另一个 div,它不起作用。 http://jsfiddle.net/6VhK8/353/ id="1
我是一名优秀的程序员,十分优秀!