mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-24 19:27:27 +00:00
VideoCommon: move graphics mod common types to a specific file that can be shared by editor and manager alike
This commit is contained in:
parent
139eda0a82
commit
a6a1c2b129
1 changed files with 174 additions and 0 deletions
174
Source/Core/VideoCommon/GraphicsModSystem/Types.h
Normal file
174
Source/Core/VideoCommon/GraphicsModSystem/Types.h
Normal file
|
@ -0,0 +1,174 @@
|
|||
// Copyright 2023 Dolphin Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <array>
|
||||
#include <span>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <variant>
|
||||
#include <vector>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
#include "Common/Matrix.h"
|
||||
#include "Common/SmallVector.h"
|
||||
#include "VideoCommon/AbstractFramebuffer.h"
|
||||
#include "VideoCommon/AbstractPipeline.h"
|
||||
#include "VideoCommon/AbstractTexture.h"
|
||||
#include "VideoCommon/ConstantManager.h"
|
||||
#include "VideoCommon/Constants.h"
|
||||
#include "VideoCommon/GXPipelineTypes.h"
|
||||
#include "VideoCommon/NativeVertexFormat.h"
|
||||
#include "VideoCommon/RenderState.h"
|
||||
#include "VideoCommon/XFMemory.h"
|
||||
|
||||
namespace GraphicsModSystem
|
||||
{
|
||||
enum class DrawCallID : unsigned long long
|
||||
{
|
||||
INVALID = 0
|
||||
};
|
||||
|
||||
enum class MeshID : unsigned long long
|
||||
{
|
||||
INVALID = 0
|
||||
};
|
||||
|
||||
enum class MaterialID : unsigned long long
|
||||
{
|
||||
INVALID = 0
|
||||
};
|
||||
|
||||
enum class LightID : unsigned long long
|
||||
{
|
||||
INVALID = 0
|
||||
};
|
||||
|
||||
using TextureCacheID = std::string;
|
||||
using TextureCacheIDView = std::string_view;
|
||||
|
||||
enum TextureType
|
||||
{
|
||||
Normal,
|
||||
EFB,
|
||||
XFB
|
||||
};
|
||||
|
||||
struct TextureView
|
||||
{
|
||||
TextureType texture_type = TextureType::Normal;
|
||||
AbstractTexture* texture_data = nullptr;
|
||||
std::string_view hash_name;
|
||||
u8 unit = 0;
|
||||
};
|
||||
|
||||
struct Texture
|
||||
{
|
||||
TextureType texture_type = TextureType::Normal;
|
||||
std::string hash_name;
|
||||
u8 unit = 0;
|
||||
};
|
||||
|
||||
struct DrawDataView
|
||||
{
|
||||
std::span<const u8> vertex_data;
|
||||
std::span<const u16> index_data;
|
||||
std::span<const float4> gpu_skinning_position_transform;
|
||||
std::span<const float4> gpu_skinning_normal_transform;
|
||||
NativeVertexFormat* vertex_format = nullptr;
|
||||
Common::SmallVector<TextureView, 8> textures;
|
||||
std::array<SamplerState, 8> samplers;
|
||||
|
||||
ProjectionType projection_type;
|
||||
VideoCommon::GXPipelineUid* uid;
|
||||
};
|
||||
|
||||
struct DrawData
|
||||
{
|
||||
Common::SmallVector<Texture, 8> textures;
|
||||
std::array<SamplerState, 8> samplers;
|
||||
|
||||
std::size_t vertex_count = 0;
|
||||
std::size_t index_count = 0;
|
||||
|
||||
ProjectionType projection_type;
|
||||
Projection::Raw projection_mat;
|
||||
RasterizationState rasterization_state;
|
||||
DepthState depth_state;
|
||||
BlendingState blending_state;
|
||||
u64 xfb_counter = 0;
|
||||
};
|
||||
|
||||
enum CameraType
|
||||
{
|
||||
None = 0,
|
||||
Closest = 1,
|
||||
Specify = 2
|
||||
};
|
||||
|
||||
struct TextureResource
|
||||
{
|
||||
const AbstractTexture* texture = nullptr;
|
||||
const SamplerState* sampler = nullptr;
|
||||
u32 sampler_index;
|
||||
std::string_view texture_hash_for_sampler;
|
||||
};
|
||||
|
||||
struct InputRenderTargetResource
|
||||
{
|
||||
const SamplerState* sampler = nullptr;
|
||||
u32 sampler_index;
|
||||
std::string_view texture_hash_for_sampler;
|
||||
|
||||
std::string_view render_target_name;
|
||||
CameraType camera_type = None;
|
||||
DrawCallID camera_originating_draw_call;
|
||||
};
|
||||
|
||||
struct OutputRenderTargetResource
|
||||
{
|
||||
AbstractTextureFormat format;
|
||||
std::string_view name;
|
||||
};
|
||||
|
||||
struct MaterialResource
|
||||
{
|
||||
const AbstractPipeline* pipeline;
|
||||
std::span<const u8> pixel_uniform_data;
|
||||
std::span<const u8> vertex_uniform_data;
|
||||
|
||||
using TextureLikeResource = std::variant<TextureResource, InputRenderTargetResource>;
|
||||
Common::SmallVector<TextureLikeResource, VideoCommon::MAX_PIXEL_SHADER_SAMPLERS> textures;
|
||||
Common::SmallVector<OutputRenderTargetResource, 8> render_targets;
|
||||
|
||||
MaterialResource* next = nullptr;
|
||||
};
|
||||
|
||||
struct MeshChunkResource
|
||||
{
|
||||
MaterialResource* material;
|
||||
std::span<const u8> vertex_data;
|
||||
std::span<const u16> index_data;
|
||||
u32 vertex_stride;
|
||||
NativeVertexFormat* vertex_format;
|
||||
PrimitiveType primitive_type;
|
||||
u32 components_available;
|
||||
Common::Matrix44 transform;
|
||||
};
|
||||
|
||||
struct MeshResource
|
||||
{
|
||||
std::vector<MeshChunkResource> mesh_chunks;
|
||||
Common::Vec3 pivot_point;
|
||||
};
|
||||
|
||||
struct Camera
|
||||
{
|
||||
bool generates_render_targets = false;
|
||||
AbstractTextureType render_target_type = AbstractTextureType::Texture_2D;
|
||||
Common::Matrix44 transform = Common::Matrix44::Identity();
|
||||
float resolution_multiplier = 1.0f;
|
||||
bool skip_orthographic = true;
|
||||
};
|
||||
} // namespace GraphicsModSystem
|
Loading…
Add table
Add a link
Reference in a new issue