Skip to content

Commit

Permalink
Rename swapchain primitive info
Browse files Browse the repository at this point in the history
Restore line drawing
  • Loading branch information
sultim-t committed Sep 29, 2023
1 parent d1f9ba4 commit e31dd19
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 15 deletions.
28 changes: 18 additions & 10 deletions Include/RTGL1/RTGL1.h
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ typedef enum RgStructureType
RG_STRUCTURE_TYPE_MESH_PRIMITIVE_TEXTURE_LAYERS_EXT = 5,
RG_STRUCTURE_TYPE_MESH_PRIMITIVE_PBR_EXT = 6,
RG_STRUCTURE_TYPE_MESH_PRIMITIVE_ATTACHED_LIGHT_EXT = 7,
RG_STRUCTURE_TYPE_MESH_PRIMITIVE_FORCE_RASTERIZED_EXT = 8,
RG_STRUCTURE_TYPE_MESH_PRIMITIVE_SWAPCHAINED_EXT = 8,
RG_STRUCTURE_TYPE_LIGHT_INFO = 9,
RG_STRUCTURE_TYPE_LIGHT_DIRECTIONAL_EXT = 10,
RG_STRUCTURE_TYPE_LIGHT_SPHERICAL_EXT = 11,
Expand Down Expand Up @@ -436,16 +436,24 @@ typedef struct RgMeshPrimitiveAttachedLightEXT
RgBool32 evenOnDynamic;
} RgMeshPrimitiveAttachedLightEXT;

// Can be linked after RgMeshPrimitiveInfo.
typedef struct RgMeshPrimitiveForceRasterizedEXT
typedef enum RgMeshPrimitiveSwapchainedFlagBits
{
RgStructureType sType;
void* pNext;
const RgViewport* pViewport;
const float* pView;
const float* pProjection;
const float* pViewProjection;
} RgMeshPrimitiveForceRasterizedEXT;
RG_MESH_PRIMITIVE_SWAPCHAINED_DRAW_AS_LINES = 1,
} RgMeshPrimitiveSwapchainedFlagBits;
typedef uint32_t RgMeshPrimitiveSwapchainedFlags;

// To draw directly into a swapchain image, at full resolution.
// Can be linked after RgMeshPrimitiveInfo.
typedef struct RgMeshPrimitiveSwapchainedEXT
{
RgStructureType sType;
void* pNext;
RgMeshPrimitiveSwapchainedFlags flags;
const RgViewport* pViewport;
const float* pView;
const float* pProjection;
const float* pViewProjection;
} RgMeshPrimitiveSwapchainedEXT;

// Primitive is an indexed or non-indexed geometry with a material.
typedef struct RgMeshPrimitiveInfo
Expand Down
6 changes: 3 additions & 3 deletions Source/DrawFrameInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ namespace detail
template<> constexpr auto TypeToStructureType< RgMeshPrimitiveTextureLayersEXT > = RG_STRUCTURE_TYPE_MESH_PRIMITIVE_TEXTURE_LAYERS_EXT ;
template<> constexpr auto TypeToStructureType< RgMeshPrimitivePBREXT > = RG_STRUCTURE_TYPE_MESH_PRIMITIVE_PBR_EXT ;
template<> constexpr auto TypeToStructureType< RgMeshPrimitiveAttachedLightEXT > = RG_STRUCTURE_TYPE_MESH_PRIMITIVE_ATTACHED_LIGHT_EXT ;
template<> constexpr auto TypeToStructureType< RgMeshPrimitiveForceRasterizedEXT > = RG_STRUCTURE_TYPE_MESH_PRIMITIVE_FORCE_RASTERIZED_EXT ;
template<> constexpr auto TypeToStructureType< RgMeshPrimitiveSwapchainedEXT > = RG_STRUCTURE_TYPE_MESH_PRIMITIVE_SWAPCHAINED_EXT ;
template<> constexpr auto TypeToStructureType< RgLensFlareInfo > = RG_STRUCTURE_TYPE_LENS_FLARE_INFO ;
template<> constexpr auto TypeToStructureType< RgLightInfo > = RG_STRUCTURE_TYPE_LIGHT_INFO ;
template<> constexpr auto TypeToStructureType< RgLightAdditionalEXT > = RG_STRUCTURE_TYPE_LIGHT_ADDITIONAL_EXT ;
Expand Down Expand Up @@ -118,7 +118,7 @@ namespace detail
static_assert( CheckMembers< RgMeshPrimitiveTextureLayersEXT >() );
static_assert( CheckMembers< RgMeshPrimitivePBREXT >() );
static_assert( CheckMembers< RgMeshPrimitiveAttachedLightEXT >() );
static_assert( CheckMembers< RgMeshPrimitiveForceRasterizedEXT >() );
static_assert( CheckMembers< RgMeshPrimitiveSwapchainedEXT >() );
static_assert( CheckMembers< RgLensFlareInfo >() );
static_assert( CheckMembers< RgLightInfo >() );
static_assert( CheckMembers< RgLightAdditionalEXT >() );
Expand All @@ -145,7 +145,7 @@ namespace detail
template<> struct LinkRootHelper< RgMeshPrimitiveTextureLayersEXT >{ using Root = RgMeshPrimitiveInfo; };
template<> struct LinkRootHelper< RgMeshPrimitivePBREXT >{ using Root = RgMeshPrimitiveInfo; };
template<> struct LinkRootHelper< RgMeshPrimitiveAttachedLightEXT >{ using Root = RgMeshPrimitiveInfo; };
template<> struct LinkRootHelper< RgMeshPrimitiveForceRasterizedEXT >{ using Root = RgMeshPrimitiveInfo; };
template<> struct LinkRootHelper< RgMeshPrimitiveSwapchainedEXT >{ using Root = RgMeshPrimitiveInfo; };
template<> struct LinkRootHelper< RgOriginalTextureDetailsEXT >{ using Root = RgOriginalTextureInfo; };
template<> struct LinkRootHelper< RgLightAdditionalEXT >{ using Root = RgLightInfo; };
template<> struct LinkRootHelper< RgLightDirectionalEXT >{ using Root = RgLightInfo; };
Expand Down
8 changes: 8 additions & 0 deletions Source/RasterizedDataCollector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,14 @@ namespace
}
}

if( auto sw = pnext::find< RgMeshPrimitiveSwapchainedEXT >( &info ) )
{
if( sw->flags & RG_MESH_PRIMITIVE_SWAPCHAINED_DRAW_AS_LINES )
{
r = r | PipelineStateFlagBits::DRAW_AS_LINES;
}
}

return r;
}

Expand Down
4 changes: 2 additions & 2 deletions Source/VulkanDevice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1084,7 +1084,7 @@ void RTGL1::VulkanDevice::UploadMeshPrimitive( const RgMeshInfo* pMesh,

auto uploadPrimitive_Core = [ this, &logDebugStat ]( const RgMeshInfo& mesh,
const RgMeshPrimitiveInfo& prim ) {
assert( !pnext::find< RgMeshPrimitiveForceRasterizedEXT >( &prim ) );
assert( !pnext::find< RgMeshPrimitiveSwapchainedEXT >( &prim ) );

if( IsRasterized( mesh, prim ) )
{
Expand Down Expand Up @@ -1243,7 +1243,7 @@ void RTGL1::VulkanDevice::UploadMeshPrimitive( const RgMeshInfo* pMesh,
}
}

if( auto raster = pnext::find< RgMeshPrimitiveForceRasterizedEXT >( &prim ) )
if( auto raster = pnext::find< RgMeshPrimitiveSwapchainedEXT >( &prim ) )
{
float vp[ 16 ];
if( raster->pViewProjection )
Expand Down

0 comments on commit e31dd19

Please sign in to comment.