当前位置:网站首页>unity computeshader的可读写buffer
unity computeshader的可读写buffer
2022-07-31 10:32:00 【VT LI】
可读写buffer:
computeshader中的读写的buffer,在opengl上是用ssbo实现的。
KernelState中的inBuffers,outBuffers这些buffer,会走到GfxDeviceGLES::SetComputeBuffer,如果索引0x7FFFFF表示GLE中实际上不存在缓冲区,但仍然需要计数器。则用BindShaderStorageBuffer来绑定ssbo,

ssbo的特点
1.如果用ubo,他的大小只能在16kb以内,但是ssbo可以达到128mb。
2.ssbo是可写的
3.ssbo具有可变存储,最多可达为该特定缓冲区绑定的任何缓冲区范围
4.在所有条件相同的情况下,SSBO访问可能会比UBO访问慢。
绑定方式
GLuint ssbo;
glGenBuffers(1, &ssbo);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, ssbo);
glBufferData(GL_SHADER_STORAGE_BUFFER, sizeof(data), data, GLenum usage); //sizeof(data) only works for statically sized C/C++ arrays.
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 3, ssbo);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0); // unbindshader中使用
layout(std430, binding = 2) buffer anotherLayoutName
{
int some_int;
float fixed_array[42];
float variable_array[];
};对应的dx12的概念是
Structured Buffer | SSBO |
UAV Buffer,RWBuffer | SSBO |
边栏推荐
猜你喜欢

darknet 源码阅读笔记-01-activation_kernels.cu

Implement a thread pool

In half a month, MySQL has been consolidated again, and a tens of thousands of words "super hard core" article has been sorted out!

redis-企业级使用

Mybaits Frequently Asked Questions Explained

【云原生监控系列第一篇】一文详解Prometheus普罗米修斯监控系统(山前前后各有风景,有风无风都很自由)

unity-shader-2

odoo14 | 附件上传功能及实际使用

Usage of JOIN in MySQL

IBM SPSS Statistics 28软件安装包下载及安装教程
随机推荐
Chapter Six
darknet 训练分类网络
如何优雅的停止一个线程?
What does "chmod 777-R filename" mean?
Three ways of single sign-on
1161. 最大层内元素和 (二叉树的层序遍历)
Web系统常见安全漏洞介绍及解决方案-sql注入
【LeetCode】Day108-和为 K 的子数组
梅科尔工作室--鸿蒙十四天开发培训笔记(八)
GCD简单了解
Inversion problem - key point
sql力扣刷题八
我们能做出来数据库吗?
Implement a thread pool
Web系统常见安全漏洞介绍及解决方案-CSRF攻击
darknet 源码阅读笔记-01-activation_kernels.cu
掌握SSR
SQL力扣刷题七
SQL存储过程详解
小程序如何使用订阅消息(PHP代码+小程序js代码)