renderer_gl: Port over gl_shader_gen module from Citra.
This commit is contained in:
		@@ -18,6 +18,8 @@ add_library(video_core STATIC
 | 
			
		||||
    renderer_opengl/gl_resource_manager.h
 | 
			
		||||
    renderer_opengl/gl_shader_decompiler.cpp
 | 
			
		||||
    renderer_opengl/gl_shader_decompiler.h
 | 
			
		||||
    renderer_opengl/gl_shader_gen.cpp
 | 
			
		||||
    renderer_opengl/gl_shader_gen.h
 | 
			
		||||
    renderer_opengl/gl_shader_util.cpp
 | 
			
		||||
    renderer_opengl/gl_shader_util.h
 | 
			
		||||
    renderer_opengl/gl_state.cpp
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								src/video_core/renderer_opengl/gl_shader_gen.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/video_core/renderer_opengl/gl_shader_gen.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
// Copyright 2018 yuzu Emulator Project
 | 
			
		||||
// Licensed under GPLv2 or any later version
 | 
			
		||||
// Refer to the license.txt file included.
 | 
			
		||||
 | 
			
		||||
#include "common/assert.h"
 | 
			
		||||
#include "video_core/renderer_opengl/gl_shader_gen.h"
 | 
			
		||||
 | 
			
		||||
namespace GLShader {
 | 
			
		||||
 | 
			
		||||
std::string GenerateVertexShader(const MaxwellVSConfig& config) {
 | 
			
		||||
    UNIMPLEMENTED();
 | 
			
		||||
    return {};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::string GenerateFragmentShader(const MaxwellFSConfig& config) {
 | 
			
		||||
    UNIMPLEMENTED();
 | 
			
		||||
    return {};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace GLShader
 | 
			
		||||
							
								
								
									
										66
									
								
								src/video_core/renderer_opengl/gl_shader_gen.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								src/video_core/renderer_opengl/gl_shader_gen.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
// Copyright 2018 yuzu Emulator Project
 | 
			
		||||
// Licensed under GPLv2 or any later version
 | 
			
		||||
// Refer to the license.txt file included.
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <cstring>
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <type_traits>
 | 
			
		||||
#include "common/hash.h"
 | 
			
		||||
 | 
			
		||||
namespace GLShader {
 | 
			
		||||
 | 
			
		||||
enum Attributes {
 | 
			
		||||
    ATTRIBUTE_POSITION,
 | 
			
		||||
    ATTRIBUTE_COLOR,
 | 
			
		||||
    ATTRIBUTE_TEXCOORD0,
 | 
			
		||||
    ATTRIBUTE_TEXCOORD1,
 | 
			
		||||
    ATTRIBUTE_TEXCOORD2,
 | 
			
		||||
    ATTRIBUTE_TEXCOORD0_W,
 | 
			
		||||
    ATTRIBUTE_NORMQUAT,
 | 
			
		||||
    ATTRIBUTE_VIEW,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct MaxwellShaderConfigCommon {
 | 
			
		||||
    explicit MaxwellShaderConfigCommon(){};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct MaxwellVSConfig : MaxwellShaderConfigCommon {
 | 
			
		||||
    explicit MaxwellVSConfig() : MaxwellShaderConfigCommon() {}
 | 
			
		||||
 | 
			
		||||
    bool operator==(const MaxwellVSConfig& o) const {
 | 
			
		||||
        return std::memcmp(this, &o, sizeof(MaxwellVSConfig)) == 0;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct MaxwellFSConfig : MaxwellShaderConfigCommon {
 | 
			
		||||
    explicit MaxwellFSConfig() : MaxwellShaderConfigCommon() {}
 | 
			
		||||
 | 
			
		||||
    bool operator==(const MaxwellFSConfig& o) const {
 | 
			
		||||
        return std::memcmp(this, &o, sizeof(MaxwellFSConfig)) == 0;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
std::string GenerateVertexShader(const MaxwellVSConfig& config);
 | 
			
		||||
std::string GenerateFragmentShader(const MaxwellFSConfig& config);
 | 
			
		||||
 | 
			
		||||
} // namespace GLShader
 | 
			
		||||
 | 
			
		||||
namespace std {
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
struct hash<GLShader::MaxwellVSConfig> {
 | 
			
		||||
    size_t operator()(const GLShader::MaxwellVSConfig& k) const {
 | 
			
		||||
        return Common::ComputeHash64(&k, sizeof(GLShader::MaxwellVSConfig));
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template <>
 | 
			
		||||
struct hash<GLShader::MaxwellFSConfig> {
 | 
			
		||||
    size_t operator()(const GLShader::MaxwellFSConfig& k) const {
 | 
			
		||||
        return Common::ComputeHash64(&k, sizeof(GLShader::MaxwellFSConfig));
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace std
 | 
			
		||||
		Reference in New Issue
	
	Block a user