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