本文整理汇总了Python中panda3d.core.Shader.make_compute方法的典型用法代码示例。如果您正苦于以下问题:Python Shader.make_compute方法的具体用法?Python Shader.make_compute怎么用?Python Shader.make_compute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类panda3d.core.Shader
的用法示例。
在下文中一共展示了Shader.make_compute方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: transform_cubemap_coordinates
# 需要导入模块: from panda3d.core import Shader [as 别名]
# 或者: from panda3d.core.Shader import make_compute [as 别名]
compute_shader = Shader.make_compute(Shader.SL_GLSL, """
#version 430
layout (local_size_x = 16, local_size_y = 16) in;
uniform writeonly image2D DestTex;
uniform samplerCube SourceCubemap;
uniform int size;
uniform int blurSize;
uniform int effectiveSize;
uniform int faceIndex;
vec3 transform_cubemap_coordinates(vec3 coord) {
return normalize(coord.xzy * vec3(1,-1,1));
}
vec3 get_transformed_coord(vec2 coord) {
float f = 1.0;
if (faceIndex == 1) return vec3(-f, coord);
if (faceIndex == 2) return vec3(coord, -f);
if (faceIndex == 0) return vec3(f, -coord.x, coord.y);
if (faceIndex == 3) return vec3(coord.xy * vec2(1,-1), f);
if (faceIndex == 4) return vec3(coord.x, f, coord.y);
if (faceIndex == 5) return vec3(-coord.x, -f, coord.y);
return vec3(0);
}
void main() {
ivec2 coord = ivec2(gl_GlobalInvocationID.xy);
ivec2 local_coord = coord - blurSize;
vec2 local_texcoord = local_coord / float(size) * 2.0 - 1.0;
vec3 direction = get_transformed_coord(local_texcoord);
direction = transform_cubemap_coordinates(direction);
vec3 sampled = texture(SourceCubemap, direction).xyz;
imageStore(DestTex, coord, vec4(sampled, 1));
}
""")