Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/intern/shaders/common_hair_refine_comp.glsl
| #pragma BLENDER_REQUIRE(common_hair_lib.glsl) | |||||
| #ifndef USE_GPU_SHADER_CREATE_INFO | |||||
| /* | /* | ||||
| * To be compiled with common_hair_lib.glsl. | * To be compiled with common_hair_lib.glsl. | ||||
| */ | */ | ||||
| layout(local_size_x = 1, local_size_y = 1) in; | layout(local_size_x = 1, local_size_y = 1) in; | ||||
| layout(std430, binding = 0) writeonly buffer hairPointOutputBuffer | layout(std430, binding = 0) writeonly buffer hairPointOutputBuffer | ||||
| { | { | ||||
| vec4 posTime[]; | vec4 posTime[]; | ||||
| } | } | ||||
| out_vertbuf; | out_vertbuf; | ||||
| #endif | |||||
| void main(void) | void main(void) | ||||
| { | { | ||||
| float interp_time; | float interp_time; | ||||
| vec4 data0, data1, data2, data3; | vec4 data0, data1, data2, data3; | ||||
| hair_get_interp_attrs(data0, data1, data2, data3, interp_time); | hair_get_interp_attrs(data0, data1, data2, data3, interp_time); | ||||
| vec4 weights = hair_get_weights_cardinal(interp_time); | vec4 weights = hair_get_weights_cardinal(interp_time); | ||||
| vec4 result = hair_interp_data(data0, data1, data2, data3, weights); | vec4 result = hair_interp_data(data0, data1, data2, data3, weights); | ||||
| uint index = uint(hair_get_id() * hairStrandsRes) + gl_GlobalInvocationID.y; | uint index = uint(hair_get_id() * hairStrandsRes) + gl_GlobalInvocationID.y; | ||||
| out_vertbuf.posTime[index] = result; | posTime[index] = result; | ||||
| } | } | ||||