Merge pull request #3230 from ReinUsesLisp/vk-emu-shaders
renderer_vulkan/shader: Add helper GLSL shaders
This commit is contained in:
		
						commit
						aea978e037
					
				
							
								
								
									
										24
									
								
								src/video_core/renderer_vulkan/shaders/blit.frag
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/video_core/renderer_vulkan/shaders/blit.frag
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | |||||||
|  | // Copyright 2019 yuzu Emulator Project | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  |  * Build instructions: | ||||||
|  |  * $ glslangValidator -V $THIS_FILE -o output.spv | ||||||
|  |  * $ spirv-opt -O --strip-debug output.spv -o optimized.spv | ||||||
|  |  * $ xxd -i optimized.spv | ||||||
|  |  * | ||||||
|  |  * Then copy that bytecode to the C++ file | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #version 460 core | ||||||
|  | 
 | ||||||
|  | layout (location = 0) in vec2 frag_tex_coord; | ||||||
|  | 
 | ||||||
|  | layout (location = 0) out vec4 color; | ||||||
|  | 
 | ||||||
|  | layout (binding = 1) uniform sampler2D color_texture; | ||||||
|  | 
 | ||||||
|  | void main() { | ||||||
|  |     color = texture(color_texture, frag_tex_coord); | ||||||
|  | } | ||||||
							
								
								
									
										28
									
								
								src/video_core/renderer_vulkan/shaders/blit.vert
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/video_core/renderer_vulkan/shaders/blit.vert
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | |||||||
|  | // Copyright 2019 yuzu Emulator Project | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  |  * Build instructions: | ||||||
|  |  * $ glslangValidator -V $THIS_FILE -o output.spv | ||||||
|  |  * $ spirv-opt -O --strip-debug output.spv -o optimized.spv | ||||||
|  |  * $ xxd -i optimized.spv | ||||||
|  |  * | ||||||
|  |  * Then copy that bytecode to the C++ file | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #version 460 core | ||||||
|  | 
 | ||||||
|  | layout (location = 0) in vec2 vert_position; | ||||||
|  | layout (location = 1) in vec2 vert_tex_coord; | ||||||
|  | 
 | ||||||
|  | layout (location = 0) out vec2 frag_tex_coord; | ||||||
|  | 
 | ||||||
|  | layout (set = 0, binding = 0) uniform MatrixBlock { | ||||||
|  |     mat4 modelview_matrix; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | void main() { | ||||||
|  |     gl_Position = modelview_matrix * vec4(vert_position, 0.0, 1.0); | ||||||
|  |     frag_tex_coord = vert_tex_coord; | ||||||
|  | } | ||||||
							
								
								
									
										37
									
								
								src/video_core/renderer_vulkan/shaders/quad_array.comp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/video_core/renderer_vulkan/shaders/quad_array.comp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | |||||||
|  | // Copyright 2019 yuzu Emulator Project | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  |  * Build instructions: | ||||||
|  |  * $ glslangValidator -V $THIS_FILE -o output.spv | ||||||
|  |  * $ spirv-opt -O --strip-debug output.spv -o optimized.spv | ||||||
|  |  * $ xxd -i optimized.spv | ||||||
|  |  * | ||||||
|  |  * Then copy that bytecode to the C++ file | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #version 460 core | ||||||
|  | 
 | ||||||
|  | layout (local_size_x = 1024) in; | ||||||
|  | 
 | ||||||
|  | layout (std430, set = 0, binding = 0) buffer OutputBuffer { | ||||||
|  |     uint output_indexes[]; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | layout (push_constant) uniform PushConstants { | ||||||
|  |     uint first; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | void main() { | ||||||
|  |     uint primitive = gl_GlobalInvocationID.x; | ||||||
|  |     if (primitive * 6 >= output_indexes.length()) { | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     const uint quad_map[6] = uint[](0, 1, 2, 0, 2, 3); | ||||||
|  |     for (uint vertex = 0; vertex < 6; ++vertex) { | ||||||
|  |         uint index = first + primitive * 4 + quad_map[vertex]; | ||||||
|  |         output_indexes[primitive * 6 + vertex] = index; | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										33
									
								
								src/video_core/renderer_vulkan/shaders/uint8.comp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/video_core/renderer_vulkan/shaders/uint8.comp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | |||||||
|  | // Copyright 2019 yuzu Emulator Project | ||||||
|  | // Licensed under GPLv2 or any later version | ||||||
|  | // Refer to the license.txt file included. | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  |  * Build instructions: | ||||||
|  |  * $ glslangValidator -V $THIS_FILE -o output.spv | ||||||
|  |  * $ spirv-opt -O --strip-debug output.spv -o optimized.spv | ||||||
|  |  * $ xxd -i optimized.spv | ||||||
|  |  * | ||||||
|  |  * Then copy that bytecode to the C++ file | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #version 460 core | ||||||
|  | #extension GL_EXT_shader_16bit_storage : require | ||||||
|  | #extension GL_EXT_shader_8bit_storage : require | ||||||
|  | 
 | ||||||
|  | layout (local_size_x = 1024) in; | ||||||
|  | 
 | ||||||
|  | layout (std430, set = 0, binding = 0) readonly buffer InputBuffer { | ||||||
|  |     uint8_t input_indexes[]; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | layout (std430, set = 0, binding = 1) writeonly buffer OutputBuffer { | ||||||
|  |     uint16_t output_indexes[]; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | void main() { | ||||||
|  |     uint id = gl_GlobalInvocationID.x; | ||||||
|  |     if (id < input_indexes.length()) { | ||||||
|  |         output_indexes[id] = uint16_t(input_indexes[id]); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Fernando Sahmkow
						Fernando Sahmkow