Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/intern/gpu_shader.c
| Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | |||||
| extern char datatoc_gpu_shader_fx_ssao_frag_glsl[]; | extern char datatoc_gpu_shader_fx_ssao_frag_glsl[]; | ||||
| extern char datatoc_gpu_shader_fx_dof_frag_glsl[]; | extern char datatoc_gpu_shader_fx_dof_frag_glsl[]; | ||||
| extern char datatoc_gpu_shader_fx_dof_vert_glsl[]; | extern char datatoc_gpu_shader_fx_dof_vert_glsl[]; | ||||
| extern char datatoc_gpu_shader_fx_dof_hq_frag_glsl[]; | extern char datatoc_gpu_shader_fx_dof_hq_frag_glsl[]; | ||||
| extern char datatoc_gpu_shader_fx_dof_hq_vert_glsl[]; | extern char datatoc_gpu_shader_fx_dof_hq_vert_glsl[]; | ||||
| extern char datatoc_gpu_shader_fx_dof_hq_geo_glsl[]; | extern char datatoc_gpu_shader_fx_dof_hq_geo_glsl[]; | ||||
| extern char datatoc_gpu_shader_fx_depth_resolve_glsl[]; | extern char datatoc_gpu_shader_fx_depth_resolve_glsl[]; | ||||
| extern char datatoc_gpu_shader_fx_lib_glsl[]; | extern char datatoc_gpu_shader_fx_lib_glsl[]; | ||||
| extern char datatoc_gpu_shader_fx_lensdistortion_frag_glsl[]; | |||||
| extern char datatoc_gpu_shader_fx_lensdistortion_vert_glsl[]; | |||||
| static struct GPUShadersGlobal { | static struct GPUShadersGlobal { | ||||
| struct { | struct { | ||||
| GPUShader *vsm_store; | GPUShader *vsm_store; | ||||
| GPUShader *sep_gaussian_blur; | GPUShader *sep_gaussian_blur; | ||||
| GPUShader *smoke; | GPUShader *smoke; | ||||
| GPUShader *smoke_fire; | GPUShader *smoke_fire; | ||||
| GPUShader *smoke_coba; | GPUShader *smoke_coba; | ||||
| ▲ Show 20 Lines • Show All 460 Lines • ▼ Show 20 Lines | |||||
| void GPU_shader_uniform_int(GPUShader *UNUSED(shader), int location, int value) | void GPU_shader_uniform_int(GPUShader *UNUSED(shader), int location, int value) | ||||
| { | { | ||||
| if (location == -1) | if (location == -1) | ||||
| return; | return; | ||||
| GPU_CHECK_ERRORS_AROUND(glUniform1i(location, value)); | GPU_CHECK_ERRORS_AROUND(glUniform1i(location, value)); | ||||
| } | } | ||||
| void GPU_shader_uniform_float(GPUShader *UNUSED(shader), int location, float value) | |||||
| { | |||||
| if (location == -1) | |||||
| return; | |||||
| GPU_CHECK_ERRORS_AROUND(glUniform1f(location, value)); | |||||
| } | |||||
| void GPU_shader_geometry_stage_primitive_io(GPUShader *shader, int input, int output, int number) | void GPU_shader_geometry_stage_primitive_io(GPUShader *shader, int input, int output, int number) | ||||
| { | { | ||||
| if (GPU_geometry_shader_support_via_extension()) { | if (GPU_geometry_shader_support_via_extension()) { | ||||
| /* geometry shaders must provide this info themselves for #version 150 and up */ | /* geometry shaders must provide this info themselves for #version 150 and up */ | ||||
| glProgramParameteriEXT(shader->program, GL_GEOMETRY_INPUT_TYPE_EXT, input); | glProgramParameteriEXT(shader->program, GL_GEOMETRY_INPUT_TYPE_EXT, input); | ||||
| glProgramParameteriEXT(shader->program, GL_GEOMETRY_OUTPUT_TYPE_EXT, output); | glProgramParameteriEXT(shader->program, GL_GEOMETRY_OUTPUT_TYPE_EXT, output); | ||||
| glProgramParameteriEXT(shader->program, GL_GEOMETRY_VERTICES_OUT_EXT, number); | glProgramParameteriEXT(shader->program, GL_GEOMETRY_VERTICES_OUT_EXT, number); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 155 Lines • ▼ Show 20 Lines | switch (effect) { | ||||
| case GPU_SHADER_FX_DEPTH_OF_FIELD_HQ_PASS_THREE: | case GPU_SHADER_FX_DEPTH_OF_FIELD_HQ_PASS_THREE: | ||||
| strcat(defines, "#define THIRD_PASS\n"); | strcat(defines, "#define THIRD_PASS\n"); | ||||
| shader = GPU_shader_create(datatoc_gpu_shader_fx_dof_hq_vert_glsl, datatoc_gpu_shader_fx_dof_hq_frag_glsl, NULL, datatoc_gpu_shader_fx_lib_glsl, defines, 0, 0, 0); | shader = GPU_shader_create(datatoc_gpu_shader_fx_dof_hq_vert_glsl, datatoc_gpu_shader_fx_dof_hq_frag_glsl, NULL, datatoc_gpu_shader_fx_lib_glsl, defines, 0, 0, 0); | ||||
| break; | break; | ||||
| case GPU_SHADER_FX_DEPTH_RESOLVE: | case GPU_SHADER_FX_DEPTH_RESOLVE: | ||||
| shader = GPU_shader_create(datatoc_gpu_shader_fx_vert_glsl, datatoc_gpu_shader_fx_depth_resolve_glsl, NULL, NULL, defines, 0, 0, 0); | shader = GPU_shader_create(datatoc_gpu_shader_fx_vert_glsl, datatoc_gpu_shader_fx_depth_resolve_glsl, NULL, NULL, defines, 0, 0, 0); | ||||
| break; | break; | ||||
| case GPU_SHADER_FX_LENS_DISTORTION: | |||||
| shader = GPU_shader_create(datatoc_gpu_shader_fx_lensdistortion_vert_glsl, datatoc_gpu_shader_fx_lensdistortion_frag_glsl, NULL, NULL, defines, 0, 0, 0); | |||||
| break; | |||||
| } | } | ||||
| GG.shaders.fx_shaders[offset] = shader; | GG.shaders.fx_shaders[offset] = shader; | ||||
| GPU_fx_shader_init_interface(shader, effect); | GPU_fx_shader_init_interface(shader, effect); | ||||
| } | } | ||||
| return GG.shaders.fx_shaders[offset]; | return GG.shaders.fx_shaders[offset]; | ||||
| } | } | ||||
| Show All 40 Lines | |||||