Added support for feature: Rasterizer Ordered Views
This commit is contained in:
@@ -80,37 +80,26 @@
|
||||
|
||||
// Automatically binds resources on the shader side:
|
||||
|
||||
#define STRUCTUREDBUFFER_X(name, type, slot) StructuredBuffer< type > name : register(t ## slot)
|
||||
#define STRUCTUREDBUFFER(name, type, slot) STRUCTUREDBUFFER_X(name, type, slot)
|
||||
#define RWSTRUCTUREDBUFFER_X(name, type, slot) RWStructuredBuffer< type > name : register(u ## slot)
|
||||
#define RWSTRUCTUREDBUFFER(name, type, slot) RWSTRUCTUREDBUFFER_X(name, type, slot)
|
||||
#define STRUCTUREDBUFFER(name, type, slot) StructuredBuffer< type > name : register(t ## slot)
|
||||
#define RWSTRUCTUREDBUFFER(name, type, slot) RWStructuredBuffer< type > name : register(u ## slot)
|
||||
#define ROVSTRUCTUREDBUFFER(name, type, slot) RasterizerOrderedStructuredBuffer< type > name : register(u ## slot)
|
||||
|
||||
|
||||
#define TEXTURE1D_X(name, type, slot) Texture1D< type > name : register(t ## slot);
|
||||
#define TEXTURE1D(name, type, slot) TEXTURE1D_X(name, type, slot)
|
||||
#define TEXTURE1DARRAY_X(name, type, slot) Texture1DArray< type > name : register(t ## slot);
|
||||
#define TEXTURE1DARRAY(name, type, slot) TEXTURE1DARRAY_X(name, type, slot)
|
||||
#define RWTEXTURE1D_X(name, type, slot) RWTexture1D< type > name : register(u ## slot);
|
||||
#define RWTEXTURE1D(name, type, slot) RWTEXTURE1D_X(name, type, slot)
|
||||
#define TEXTURE1D(name, type, slot) Texture1D< type > name : register(t ## slot);
|
||||
#define TEXTURE1DARRAY(name, type, slot) Texture1DArray< type > name : register(t ## slot);
|
||||
#define RWTEXTURE1D(name, type, slot) RWTexture1D< type > name : register(u ## slot);
|
||||
|
||||
#define TEXTURE2D_X(name, type, slot) Texture2D< type > name : register(t ## slot);
|
||||
#define TEXTURE2D(name, type, slot) TEXTURE2D_X(name, type, slot)
|
||||
#define TEXTURE2DMS_X(name, type, slot) Texture2DMS< type > name : register(t ## slot);
|
||||
#define TEXTURE2DMS(name, type, slot) TEXTURE2DMS_X(name, type, slot)
|
||||
#define TEXTURE2DARRAY_X(name, type, slot) Texture2DArray< type > name : register(t ## slot);
|
||||
#define TEXTURE2DARRAY(name, type, slot) TEXTURE2DARRAY_X(name, type, slot)
|
||||
#define RWTEXTURE2D_X(name, type, slot) RWTexture2D< type > name : register(u ## slot);
|
||||
#define RWTEXTURE2D(name, type, slot) RWTEXTURE2D_X(name, type, slot)
|
||||
#define TEXTURE2D(name, type, slot) Texture2D< type > name : register(t ## slot);
|
||||
#define TEXTURE2DMS(name, type, slot) Texture2DMS< type > name : register(t ## slot);
|
||||
#define TEXTURE2DARRAY(name, type, slot) Texture2DArray< type > name : register(t ## slot);
|
||||
#define RWTEXTURE2D(name, type, slot) RWTexture2D< type > name : register(u ## slot);
|
||||
#define ROVTEXTURE2D(name, type, slot) RasterizerOrderedTexture2D< type > name : register(u ## slot);
|
||||
|
||||
#define TEXTURECUBE_X(name, type, slot) TextureCube< type > name : register(t ## slot);
|
||||
#define TEXTURECUBE(name, type, slot) TEXTURECUBE_X(name, type, slot)
|
||||
#define TEXTURECUBEARRAY_X(name, type, slot) TextureCubeArray< type > name : register(t ## slot);
|
||||
#define TEXTURECUBEARRAY(name, type, slot) TEXTURECUBEARRAY_X(name, type, slot)
|
||||
|
||||
#define TEXTURE3D_X(name, type, slot) Texture3D< type > name : register(t ## slot);
|
||||
#define TEXTURE3D(name, type, slot) TEXTURE3D_X(name, type, slot)
|
||||
#define RWTEXTURE3D_X(name, type, slot) RWTexture3D< type > name : register(u ## slot);
|
||||
#define RWTEXTURE3D(name, type, slot) RWTEXTURE3D_X(name, type, slot)
|
||||
#define TEXTURECUBE(name, type, slot) TextureCube< type > name : register(t ## slot);
|
||||
#define TEXTURECUBEARRAY(name, type, slot) TextureCubeArray< type > name : register(t ## slot);
|
||||
|
||||
#define TEXTURE3D(name, type, slot) Texture3D< type > name : register(t ## slot);
|
||||
#define RWTEXTURE3D(name, type, slot) RWTexture3D< type > name : register(u ## slot);
|
||||
#define ROVTEXTURE3D(name, type, slot) RasterizerOrderedTexture3D< type > name : register(u ## slot);
|
||||
|
||||
#endif // _RESOURCEBUFFER_MAPPING_H_
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "objectHF.hlsli"
|
||||
|
||||
RWTEXTURE3D(output_emission, float4, 0);
|
||||
RWTEXTURE3D(output_normal, float4, 1);
|
||||
ROVTEXTURE3D(output_emission, float4, 0);
|
||||
ROVTEXTURE3D(output_normal, float4, 1);
|
||||
|
||||
void main(float4 pos : SV_POSITION, float3 N : NORMAL, float2 tex : TEXCOORD, float3 P : POSITION3D)
|
||||
{
|
||||
|
||||
@@ -277,10 +277,10 @@ namespace wiGraphicsTypes
|
||||
};
|
||||
enum GPU_QUERY_TYPE
|
||||
{
|
||||
GPU_QUERY_TYPE_OCCLUSION, // how many samples passed depthstencil test?
|
||||
GPU_QUERY_TYPE_OCCLUSION, // how many samples passed depthstencil test?
|
||||
GPU_QUERY_TYPE_OCCLUSION_PREDICATE, // are there any samples that passed depthstencil test
|
||||
GPU_QUERY_TYPE_TIMESTAMP,
|
||||
GPU_QUERY_TYPE_TIMESTAMP_DISJOINT,
|
||||
GPU_QUERY_TYPE_TIMESTAMP, // retrieve time point of gpu execution
|
||||
GPU_QUERY_TYPE_TIMESTAMP_DISJOINT, // timestamp frequency information
|
||||
};
|
||||
|
||||
// Flags ////////////////////////////////////////////
|
||||
@@ -324,12 +324,22 @@ namespace wiGraphicsTypes
|
||||
|
||||
struct ViewPort
|
||||
{
|
||||
FLOAT TopLeftX;
|
||||
FLOAT TopLeftY;
|
||||
FLOAT Width;
|
||||
FLOAT Height;
|
||||
FLOAT MinDepth;
|
||||
FLOAT MaxDepth;
|
||||
float TopLeftX;
|
||||
float TopLeftY;
|
||||
float Width;
|
||||
float Height;
|
||||
float MinDepth;
|
||||
float MaxDepth;
|
||||
|
||||
ViewPort():
|
||||
TopLeftX(0.0f),
|
||||
TopLeftY(0.0f),
|
||||
Width(0.0f),
|
||||
Height(0.0f),
|
||||
MinDepth(0.0f),
|
||||
MaxDepth(1.0f)
|
||||
{
|
||||
}
|
||||
};
|
||||
struct VertexLayoutDesc
|
||||
{
|
||||
@@ -397,26 +407,43 @@ namespace wiGraphicsTypes
|
||||
TEXTURE_ADDRESS_MODE AddressU;
|
||||
TEXTURE_ADDRESS_MODE AddressV;
|
||||
TEXTURE_ADDRESS_MODE AddressW;
|
||||
FLOAT MipLODBias;
|
||||
float MipLODBias;
|
||||
UINT MaxAnisotropy;
|
||||
COMPARISON_FUNC ComparisonFunc;
|
||||
FLOAT BorderColor[4];
|
||||
FLOAT MinLOD;
|
||||
FLOAT MaxLOD;
|
||||
float BorderColor[4];
|
||||
float MinLOD;
|
||||
float MaxLOD;
|
||||
};
|
||||
struct RasterizerStateDesc
|
||||
{
|
||||
FILL_MODE FillMode;
|
||||
CULL_MODE CullMode;
|
||||
BOOL FrontCounterClockwise;
|
||||
bool FrontCounterClockwise;
|
||||
INT DepthBias;
|
||||
FLOAT DepthBiasClamp;
|
||||
FLOAT SlopeScaledDepthBias;
|
||||
BOOL DepthClipEnable;
|
||||
BOOL ScissorEnable;
|
||||
BOOL MultisampleEnable;
|
||||
BOOL AntialiasedLineEnable;
|
||||
BOOL ConservativeRasterizationEnable;
|
||||
float DepthBiasClamp;
|
||||
float SlopeScaledDepthBias;
|
||||
bool DepthClipEnable;
|
||||
bool ScissorEnable;
|
||||
bool MultisampleEnable;
|
||||
bool AntialiasedLineEnable;
|
||||
bool ConservativeRasterizationEnable;
|
||||
UINT ForcedSampleCount;
|
||||
|
||||
RasterizerStateDesc() :
|
||||
FillMode( FILL_SOLID ),
|
||||
CullMode( CULL_NONE ),
|
||||
FrontCounterClockwise( false ),
|
||||
DepthBias( 0 ),
|
||||
DepthBiasClamp( 0.0f ),
|
||||
SlopeScaledDepthBias( 0.0f ),
|
||||
DepthClipEnable( false ),
|
||||
ScissorEnable( false ),
|
||||
MultisampleEnable( false ),
|
||||
AntialiasedLineEnable( false ),
|
||||
ConservativeRasterizationEnable( false ),
|
||||
ForcedSampleCount( 0 )
|
||||
{
|
||||
}
|
||||
};
|
||||
struct DepthStencilOpDesc
|
||||
{
|
||||
@@ -427,10 +454,10 @@ namespace wiGraphicsTypes
|
||||
};
|
||||
struct DepthStencilStateDesc
|
||||
{
|
||||
BOOL DepthEnable;
|
||||
bool DepthEnable;
|
||||
DEPTH_WRITE_MASK DepthWriteMask;
|
||||
COMPARISON_FUNC DepthFunc;
|
||||
BOOL StencilEnable;
|
||||
bool StencilEnable;
|
||||
UINT8 StencilReadMask;
|
||||
UINT8 StencilWriteMask;
|
||||
DepthStencilOpDesc FrontFace;
|
||||
@@ -438,7 +465,7 @@ namespace wiGraphicsTypes
|
||||
};
|
||||
struct RenderTargetBlendStateDesc
|
||||
{
|
||||
BOOL BlendEnable;
|
||||
bool BlendEnable;
|
||||
BLEND SrcBlend;
|
||||
BLEND DestBlend;
|
||||
BLEND_OP BlendOp;
|
||||
@@ -449,8 +476,8 @@ namespace wiGraphicsTypes
|
||||
};
|
||||
struct BlendStateDesc
|
||||
{
|
||||
BOOL AlphaToCoverageEnable;
|
||||
BOOL IndependentBlendEnable;
|
||||
bool AlphaToCoverageEnable;
|
||||
bool IndependentBlendEnable;
|
||||
RenderTargetBlendStateDesc RenderTarget[8];
|
||||
};
|
||||
struct GPUBufferDesc
|
||||
|
||||
@@ -67,6 +67,7 @@ namespace wiGraphicsTypes
|
||||
GRAPHICSDEVICE_CAPABILITY_TESSELLATION,
|
||||
GRAPHICSDEVICE_CAPABILITY_MULTITHREADED_RENDERING,
|
||||
GRAPHICSDEVICE_CAPABILITY_CONSERVATIVE_RASTERIZATION,
|
||||
GRAPHICSDEVICE_CAPABILITY_RASTERIZER_ORDERED_VIEWS,
|
||||
GRAPHICSDEVICE_CAPABILITY_COUNT,
|
||||
};
|
||||
virtual bool CheckCapability(GRAPHICSDEVICE_CAPABILITY capability) = 0;
|
||||
|
||||
@@ -1431,8 +1431,6 @@ GraphicsDevice_DX11::GraphicsDevice_DX11(wiWindowRegistration::window_type windo
|
||||
|
||||
D3D_FEATURE_LEVEL aquiredFeatureLevel = device->GetFeatureLevel();
|
||||
DX11 = ((aquiredFeatureLevel >= D3D_FEATURE_LEVEL_11_0) ? true : false);
|
||||
CONSERVATIVE_RASTERIZATION = aquiredFeatureLevel >= D3D_FEATURE_LEVEL_12_1;
|
||||
CONSERVATIVE_RASTERIZATION = false; // TODO: correct query!
|
||||
|
||||
IDXGIDevice2 * pDXGIDevice;
|
||||
hr = device->QueryInterface(__uuidof(IDXGIDevice2), (void **)&pDXGIDevice);
|
||||
@@ -1508,6 +1506,10 @@ GraphicsDevice_DX11::GraphicsDevice_DX11(wiWindowRegistration::window_type windo
|
||||
DEFERREDCONTEXT_SUPPORT = false;
|
||||
}
|
||||
|
||||
D3D11_FEATURE_DATA_D3D11_OPTIONS2 features_2;
|
||||
hr = device->CheckFeatureSupport( D3D11_FEATURE_D3D11_OPTIONS2, &features_2, sizeof( features_2 ) );
|
||||
CONSERVATIVE_RASTERIZATION = features_2.ConservativeRasterizationTier >= D3D11_CONSERVATIVE_RASTERIZATION_TIER_1;
|
||||
RASTERIZER_ORDERED_VIEWS = features_2.ROVsSupported == TRUE;
|
||||
|
||||
// Create a render target view
|
||||
backBuffer = NULL;
|
||||
@@ -1577,6 +1579,9 @@ bool GraphicsDevice_DX11::CheckCapability(GRAPHICSDEVICE_CAPABILITY capability)
|
||||
case wiGraphicsTypes::GraphicsDevice::GRAPHICSDEVICE_CAPABILITY_CONSERVATIVE_RASTERIZATION:
|
||||
return CONSERVATIVE_RASTERIZATION;
|
||||
break;
|
||||
case wiGraphicsTypes::GraphicsDevice::GRAPHICSDEVICE_CAPABILITY_RASTERIZER_ORDERED_VIEWS:
|
||||
return RASTERIZER_ORDERED_VIEWS;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -2377,36 +2382,7 @@ HRESULT GraphicsDevice_DX11::CreateDepthStencilState(const DepthStencilStateDesc
|
||||
}
|
||||
HRESULT GraphicsDevice_DX11::CreateRasterizerState(const RasterizerStateDesc *pRasterizerStateDesc, RasterizerState *pRasterizerState)
|
||||
{
|
||||
//if (pRasterizerStateDesc->ConservativeRasterizationEnable == TRUE)
|
||||
//{
|
||||
// ID3D11Device3* device3 = nullptr;
|
||||
// if (SUCCEEDED(device->QueryInterface(__uuidof(ID3D11Device3), (void**)&device3)))
|
||||
// {
|
||||
// D3D11_RASTERIZER_DESC2 desc;
|
||||
// desc.FillMode = _ConvertFillMode(pRasterizerStateDesc->FillMode);
|
||||
// desc.CullMode = _ConvertCullMode(pRasterizerStateDesc->CullMode);
|
||||
// desc.FrontCounterClockwise = pRasterizerStateDesc->FrontCounterClockwise;
|
||||
// desc.DepthBias = pRasterizerStateDesc->DepthBias;
|
||||
// desc.DepthBiasClamp = pRasterizerStateDesc->DepthBiasClamp;
|
||||
// desc.SlopeScaledDepthBias = pRasterizerStateDesc->SlopeScaledDepthBias;
|
||||
// desc.DepthClipEnable = pRasterizerStateDesc->DepthClipEnable;
|
||||
// desc.ScissorEnable = pRasterizerStateDesc->ScissorEnable;
|
||||
// desc.MultisampleEnable = pRasterizerStateDesc->MultisampleEnable;
|
||||
// desc.AntialiasedLineEnable = pRasterizerStateDesc->AntialiasedLineEnable;
|
||||
// desc.ConservativeRaster = D3D11_CONSERVATIVE_RASTERIZATION_MODE_ON;
|
||||
// desc.ForcedSampleCount = 0;
|
||||
|
||||
// pRasterizerState->desc = *pRasterizerStateDesc;
|
||||
|
||||
// HRESULT hr = device3->CreateRasterizerState2(&desc, &pRasterizerState->resource_DX11_2);
|
||||
// SAFE_RELEASE(device3);
|
||||
// return hr;
|
||||
// }
|
||||
//}
|
||||
|
||||
//LOCK();
|
||||
//CONSERVATIVE_RASTERIZATION = false;
|
||||
//UNLOCK();
|
||||
pRasterizerState->desc = *pRasterizerStateDesc;
|
||||
|
||||
D3D11_RASTERIZER_DESC desc;
|
||||
desc.FillMode = _ConvertFillMode(pRasterizerStateDesc->FillMode);
|
||||
@@ -2420,7 +2396,63 @@ HRESULT GraphicsDevice_DX11::CreateRasterizerState(const RasterizerStateDesc *pR
|
||||
desc.MultisampleEnable = pRasterizerStateDesc->MultisampleEnable;
|
||||
desc.AntialiasedLineEnable = pRasterizerStateDesc->AntialiasedLineEnable;
|
||||
|
||||
pRasterizerState->desc = *pRasterizerStateDesc;
|
||||
|
||||
if( CONSERVATIVE_RASTERIZATION && pRasterizerStateDesc->ConservativeRasterizationEnable == TRUE )
|
||||
{
|
||||
ID3D11Device3* device3 = nullptr;
|
||||
if( SUCCEEDED( device->QueryInterface( __uuidof( ID3D11Device3 ), ( void** )&device3 ) ) )
|
||||
{
|
||||
D3D11_RASTERIZER_DESC2 desc2;
|
||||
desc2.FillMode = desc.FillMode;
|
||||
desc2.CullMode = desc.CullMode;
|
||||
desc2.FrontCounterClockwise = desc.FrontCounterClockwise;
|
||||
desc2.DepthBias = desc.DepthBias;
|
||||
desc2.DepthBiasClamp = desc.DepthBiasClamp;
|
||||
desc2.SlopeScaledDepthBias = desc.SlopeScaledDepthBias;
|
||||
desc2.DepthClipEnable = desc.DepthClipEnable;
|
||||
desc2.ScissorEnable = desc.ScissorEnable;
|
||||
desc2.MultisampleEnable = desc.MultisampleEnable;
|
||||
desc2.AntialiasedLineEnable = desc.AntialiasedLineEnable;
|
||||
desc2.ConservativeRaster = D3D11_CONSERVATIVE_RASTERIZATION_MODE_ON;
|
||||
desc2.ForcedSampleCount = ( RASTERIZER_ORDERED_VIEWS ? pRasterizerStateDesc->ForcedSampleCount : 0 );
|
||||
|
||||
pRasterizerState->desc = *pRasterizerStateDesc;
|
||||
|
||||
ID3D11RasterizerState2* rasterizer2 = nullptr;
|
||||
HRESULT hr = device3->CreateRasterizerState2( &desc2, &rasterizer2 );
|
||||
pRasterizerState->resource_DX11 = ( ID3D11RasterizerState* )rasterizer2;
|
||||
SAFE_RELEASE( device3 );
|
||||
return hr;
|
||||
}
|
||||
}
|
||||
else if( RASTERIZER_ORDERED_VIEWS && pRasterizerStateDesc->ForcedSampleCount > 0 )
|
||||
{
|
||||
ID3D11Device1* device1 = nullptr;
|
||||
if( SUCCEEDED( device->QueryInterface( __uuidof( ID3D11Device1 ), ( void** )&device1 ) ) )
|
||||
{
|
||||
D3D11_RASTERIZER_DESC1 desc1;
|
||||
desc1.FillMode = desc.FillMode;
|
||||
desc1.CullMode = desc.CullMode;
|
||||
desc1.FrontCounterClockwise = desc.FrontCounterClockwise;
|
||||
desc1.DepthBias = desc.DepthBias;
|
||||
desc1.DepthBiasClamp = desc.DepthBiasClamp;
|
||||
desc1.SlopeScaledDepthBias = desc.SlopeScaledDepthBias;
|
||||
desc1.DepthClipEnable = desc.DepthClipEnable;
|
||||
desc1.ScissorEnable = desc.ScissorEnable;
|
||||
desc1.MultisampleEnable = desc.MultisampleEnable;
|
||||
desc1.AntialiasedLineEnable = desc.AntialiasedLineEnable;
|
||||
desc1.ForcedSampleCount = pRasterizerStateDesc->ForcedSampleCount;
|
||||
|
||||
pRasterizerState->desc = *pRasterizerStateDesc;
|
||||
|
||||
ID3D11RasterizerState1* rasterizer1 = nullptr;
|
||||
HRESULT hr = device1->CreateRasterizerState1( &desc1, &rasterizer1 );
|
||||
pRasterizerState->resource_DX11 = ( ID3D11RasterizerState* )rasterizer1;
|
||||
SAFE_RELEASE( device1 );
|
||||
return hr;
|
||||
}
|
||||
}
|
||||
|
||||
return device->CreateRasterizerState(&desc, &pRasterizerState->resource_DX11);
|
||||
}
|
||||
HRESULT GraphicsDevice_DX11::CreateSamplerState(const SamplerDesc *pSamplerDesc, Sampler *pSamplerState)
|
||||
@@ -2759,7 +2791,7 @@ void GraphicsDevice_DX11::BindDepthStencilState(const DepthStencilState* state,
|
||||
}
|
||||
void GraphicsDevice_DX11::BindRasterizerState(const RasterizerState* state, GRAPHICSTHREAD threadID)
|
||||
{
|
||||
deviceContexts[threadID]->RSSetState(state->resource_DX11_2 != nullptr ? state->resource_DX11_2 : state->resource_DX11);
|
||||
deviceContexts[threadID]->RSSetState(state->resource_DX11);
|
||||
}
|
||||
void GraphicsDevice_DX11::BindStreamOutTarget(const GPUBuffer* buffer, GRAPHICSTHREAD threadID)
|
||||
{
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace wiGraphicsTypes
|
||||
ViewPort viewPort;
|
||||
ID3D11DeviceContext* deviceContexts[GRAPHICSTHREAD_COUNT];
|
||||
ID3D11CommandList* commandLists[GRAPHICSTHREAD_COUNT];
|
||||
bool DX11, DEFERREDCONTEXT_SUPPORT, CONSERVATIVE_RASTERIZATION;
|
||||
bool DX11, DEFERREDCONTEXT_SUPPORT, CONSERVATIVE_RASTERIZATION, RASTERIZER_ORDERED_VIEWS;
|
||||
ID3DUserDefinedAnnotation* userDefinedAnnotations[GRAPHICSTHREAD_COUNT];
|
||||
|
||||
public:
|
||||
|
||||
@@ -123,12 +123,10 @@ namespace wiGraphicsTypes
|
||||
RasterizerState::RasterizerState()
|
||||
{
|
||||
SAFE_INIT(resource_DX11);
|
||||
SAFE_INIT(resource_DX11_2);
|
||||
}
|
||||
RasterizerState::~RasterizerState()
|
||||
{
|
||||
SAFE_RELEASE(resource_DX11);
|
||||
SAFE_RELEASE(resource_DX11_2);
|
||||
}
|
||||
|
||||
ClassLinkage::ClassLinkage()
|
||||
|
||||
@@ -199,7 +199,6 @@ namespace wiGraphicsTypes
|
||||
friend class GraphicsDevice_DX11;
|
||||
private:
|
||||
ID3D11RasterizerState* resource_DX11;
|
||||
ID3D11RasterizerState2* resource_DX11_2;
|
||||
RasterizerStateDesc desc;
|
||||
public:
|
||||
RasterizerState();
|
||||
|
||||
@@ -1033,7 +1033,7 @@ void wiRenderer::SetUpStates()
|
||||
rs.ScissorEnable = false;
|
||||
rs.MultisampleEnable = false;
|
||||
rs.AntialiasedLineEnable = false;
|
||||
rs.ConservativeRasterizationEnable = true;
|
||||
rs.ConservativeRasterizationEnable = false; // do it in the shader for now...
|
||||
GetDevice()->CreateRasterizerState(&rs, rasterizers[RSTYPE_VOXELIZE]);
|
||||
|
||||
for (int i = 0; i < DSSTYPE_LAST; ++i)
|
||||
@@ -3941,10 +3941,11 @@ void wiRenderer::VoxelizeScene(GRAPHICSTHREAD threadID)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//if (!GetDevice()->CheckCapability(GraphicsDevice::GRAPHICSDEVICE_CAPABILITY_CONSERVATIVE_RASTERIZATION))
|
||||
//{
|
||||
// return;
|
||||
//}
|
||||
if( !GetDevice()->CheckCapability( GraphicsDevice::GRAPHICSDEVICE_CAPABILITY_RASTERIZER_ORDERED_VIEWS ) )
|
||||
{
|
||||
// TODO: support
|
||||
return;
|
||||
}
|
||||
|
||||
GetDevice()->EventBegin("Voxelize Scene", threadID);
|
||||
wiProfiler::GetInstance().BeginRange("Voxelize Scene", wiProfiler::DOMAIN_GPU, threadID);
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace wiVersion
|
||||
// minor features, major updates
|
||||
const int minor = 11;
|
||||
// minor bug fixes, alterations, refactors, updates
|
||||
const int revision = 1;
|
||||
const int revision = 2;
|
||||
|
||||
|
||||
long GetVersion()
|
||||
|
||||
Reference in New Issue
Block a user