11 .local_group_size(1, 1)
12 .storage_buf(0, Qualifier::WRITE,
"vec4",
"posTime[]")
13 .sampler(0, ImageType::FLOAT_BUFFER,
"hairPointBuffer")
14 .sampler(1, ImageType::UINT_BUFFER,
"hairStrandBuffer")
15 .sampler(2, ImageType::UINT_BUFFER,
"hairStrandSegBuffer")
16 .push_constant(Type::MAT4,
"hairDupliMatrix")
17 .push_constant(Type::BOOL,
"hairCloseTip")
21 .push_constant(Type::INT,
"hairThicknessRes")
22 .push_constant(Type::INT,
"hairStrandsRes")
23 .push_constant(Type::INT,
"hairStrandOffset")
24 .compute_source(
"common_hair_refine_comp.glsl")
25 .define(
"HAIR_PHASE_SUBDIV")
26 .do_static_compilation(
true);
29 .smooth(Type::VEC4,
"finalColor");
32 .define(
"srgbTarget",
"false")
33 .define(
"blender_srgb_to_framebuffer_space(a)",
"a")
34 .define(
"HAIR_PHASE_SUBDIV")
35 .define(
"TF_WORKAROUND")
38 .sampler(0, ImageType::UINT_BUFFER,
"hairStrandBuffer")
39 .sampler(1, ImageType::UINT_BUFFER,
"hairStrandSegBuffer")
41 .push_constant(Type::INT,
"targetWidth")
42 .push_constant(Type::INT,
"targetHeight")
43 .push_constant(Type::INT,
"idOffset")
44 .vertex_out(draw_hair_refine_transform_feedback_workaround_iface)
45 .fragment_out(0, Type::VEC4,
"fragColor")
46 .vertex_source(
"common_hair_refine_vert.glsl")
47 .fragment_source(
"gpu_shader_3D_smooth_color_frag.glsl")
48 .additional_info(
"draw_hair")
49 .do_static_compilation(
true);
#define GPU_SHADER_INTERFACE_INFO(_interface, _inst_name)
#define GPU_SHADER_CREATE_INFO(_info)