DX12: removed some dependencies on vulkan implementation.
This commit is contained in:
parent
ca9ab2c38c
commit
2610ef131e
|
|
@ -1189,7 +1189,7 @@ static void get_mvp_transform(float* mvp) {
|
|||
p[12], p[13], P14, p[15]
|
||||
};
|
||||
|
||||
myGlMultMatrix(vk_world.modelview_transform, proj, mvp);
|
||||
myGlMultMatrix(dx_world.modelview_transform, proj, mvp);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1444,11 +1444,12 @@ void dx_shade_geometry(ID3D12PipelineState* pipeline_state, bool multitexture, V
|
|||
dx.command_list->DrawIndexedInstanced(tess.numIndexes, 1, 0, 0, 0);
|
||||
else
|
||||
dx.command_list->DrawInstanced(tess.numVertexes, 1, 0, 0);
|
||||
|
||||
//dx_world.dirty_depth_attachment = true;
|
||||
}
|
||||
|
||||
void dx_begin_frame() {
|
||||
if (!dx.active)
|
||||
return;
|
||||
|
||||
if (dx.fence->GetCompletedValue() < dx.fence_value) {
|
||||
DX_CHECK(dx.fence->SetEventOnCompletion(dx.fence_value, dx.fence_event));
|
||||
WaitForSingleObject(dx.fence_event, INFINITE);
|
||||
|
|
@ -1464,7 +1465,6 @@ void dx_begin_frame() {
|
|||
ID3D12DescriptorHeap* heaps[] = { dx.srv_heap, dx.sampler_heap };
|
||||
dx.command_list->SetDescriptorHeaps(_countof(heaps), heaps);
|
||||
|
||||
// Indicate that the back buffer will be used as a render target.
|
||||
dx.command_list->ResourceBarrier(1, &get_transition_barrier(dx.render_targets[dx.frame_index],
|
||||
D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET));
|
||||
|
||||
|
|
@ -1475,12 +1475,6 @@ void dx_begin_frame() {
|
|||
|
||||
dx.command_list->OMSetRenderTargets(1, &rtv_handle, FALSE, &dsv_handle);
|
||||
|
||||
D3D12_CLEAR_FLAGS flags = D3D12_CLEAR_FLAG_DEPTH;
|
||||
if (r_shadows->integer == 2)
|
||||
flags |= D3D12_CLEAR_FLAG_STENCIL;
|
||||
|
||||
dx.command_list->ClearDepthStencilView(dsv_handle, flags, 1.0f, 0, 0, nullptr);
|
||||
|
||||
dx.xyz_elements = 0;
|
||||
dx.color_st_elements = 0;
|
||||
dx.index_buffer_offset = 0;
|
||||
|
|
|
|||
|
|
@ -142,4 +142,5 @@ struct Dx_World {
|
|||
// State.
|
||||
//
|
||||
int current_image_indices[2];
|
||||
float modelview_transform[16];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -451,7 +451,7 @@ void RB_BeginDrawingView (void) {
|
|||
vk_clear_attachments(vk_world.dirty_depth_attachment, fast_sky, fast_sky_color);
|
||||
|
||||
// DX12
|
||||
dx_clear_attachments(vk_world.dirty_depth_attachment, fast_sky, fast_sky_color);
|
||||
dx_clear_attachments(true, fast_sky, fast_sky_color);
|
||||
|
||||
if ( ( backEnd.refdef.rdflags & RDF_HYPERSPACE ) )
|
||||
{
|
||||
|
|
@ -586,6 +586,9 @@ void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs ) {
|
|||
// VULKAN
|
||||
Com_Memcpy(vk_world.modelview_transform, backEnd.or.modelMatrix, 64);
|
||||
|
||||
// DX12
|
||||
Com_Memcpy(dx_world.modelview_transform, backEnd.or.modelMatrix, 64);
|
||||
|
||||
//
|
||||
// change depthrange if needed
|
||||
//
|
||||
|
|
@ -618,6 +621,9 @@ void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs ) {
|
|||
// VULKAN
|
||||
Com_Memcpy(vk_world.modelview_transform, backEnd.viewParms.world.modelMatrix, 64);
|
||||
|
||||
// DX12
|
||||
Com_Memcpy(dx_world.modelview_transform, backEnd.viewParms.world.modelMatrix, 64);
|
||||
|
||||
if ( depthRange ) {
|
||||
qglDepthRange (0, 1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1407,6 +1407,8 @@ void R_DebugPolygon( int color, int numPoints, float *points ) {
|
|||
|
||||
// VULKAN
|
||||
// DX12
|
||||
if (!vk.active && !dx.active)
|
||||
return;
|
||||
if (numPoints < 3 || numPoints >= SHADER_MAX_VERTEXES/2)
|
||||
return;
|
||||
|
||||
|
|
@ -1417,7 +1419,7 @@ void R_DebugPolygon( int color, int numPoints, float *points ) {
|
|||
|
||||
// Backface culling.
|
||||
auto transform_to_eye_space = [](vec3_t v, vec3_t v_eye) {
|
||||
auto m = vk_world.modelview_transform;
|
||||
auto m = vk.active ? vk_world.modelview_transform : dx_world.modelview_transform;
|
||||
v_eye[0] = m[0]*v[0] + m[4]*v[1] + m[8 ]*v[2] + m[12];
|
||||
v_eye[1] = m[1]*v[0] + m[5]*v[1] + m[9 ]*v[2] + m[13];
|
||||
v_eye[2] = m[2]*v[0] + m[6]*v[1] + m[10]*v[2] + m[14];
|
||||
|
|
|
|||
|
|
@ -339,25 +339,38 @@ void RB_ShadowFinish( void ) {
|
|||
}
|
||||
tess.numVertexes = 4;
|
||||
|
||||
// set backEnd.or.modelMatrix to identity matrix
|
||||
float tmp[16];
|
||||
Com_Memcpy(tmp, vk_world.modelview_transform, 64);
|
||||
Com_Memset(vk_world.modelview_transform, 0, 64);
|
||||
vk_world.modelview_transform[0] = 1.0f;
|
||||
vk_world.modelview_transform[5] = 1.0f;
|
||||
vk_world.modelview_transform[10] = 1.0f;
|
||||
vk_world.modelview_transform[15] = 1.0f;
|
||||
|
||||
if (vk.active) {
|
||||
// set backEnd.or.modelMatrix to identity matrix
|
||||
float tmp[16];
|
||||
Com_Memcpy(tmp, vk_world.modelview_transform, 64);
|
||||
Com_Memset(vk_world.modelview_transform, 0, 64);
|
||||
vk_world.modelview_transform[0] = 1.0f;
|
||||
vk_world.modelview_transform[5] = 1.0f;
|
||||
vk_world.modelview_transform[10] = 1.0f;
|
||||
vk_world.modelview_transform[15] = 1.0f;
|
||||
|
||||
vk_bind_geometry();
|
||||
vk_shade_geometry(vk.shadow_finish_pipeline, false, Vk_Depth_Range::normal);
|
||||
}
|
||||
if (dx.active) {
|
||||
dx_bind_geometry();
|
||||
dx_shade_geometry(dx.shadow_finish_pipeline_state, false, Vk_Depth_Range::normal, true, false);
|
||||
|
||||
Com_Memcpy(vk_world.modelview_transform, tmp, 64);
|
||||
}
|
||||
|
||||
if (dx.active) {
|
||||
// set backEnd.or.modelMatrix to identity matrix
|
||||
float tmp[16];
|
||||
Com_Memcpy(tmp, dx_world.modelview_transform, 64);
|
||||
Com_Memset(dx_world.modelview_transform, 0, 64);
|
||||
dx_world.modelview_transform[0] = 1.0f;
|
||||
dx_world.modelview_transform[5] = 1.0f;
|
||||
dx_world.modelview_transform[10] = 1.0f;
|
||||
dx_world.modelview_transform[15] = 1.0f;
|
||||
|
||||
dx_bind_geometry();
|
||||
dx_shade_geometry(dx.shadow_finish_pipeline_state, false, Vk_Depth_Range::normal, true, false);
|
||||
|
||||
Com_Memcpy(dx_world.modelview_transform, tmp, 64);
|
||||
}
|
||||
|
||||
Com_Memcpy(vk_world.modelview_transform, tmp, 64);
|
||||
tess.numIndexes = 0;
|
||||
tess.numVertexes = 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -740,6 +740,7 @@ void RB_StageIteratorSky( void ) {
|
|||
backEnd.viewParms.or.origin[0], backEnd.viewParms.or.origin[1], backEnd.viewParms.or.origin[2], 1
|
||||
};
|
||||
myGlMultMatrix(skybox_translate, modelMatrix_original, vk_world.modelview_transform);
|
||||
myGlMultMatrix(skybox_translate, modelMatrix_original, dx_world.modelview_transform);
|
||||
|
||||
GL_State( 0 );
|
||||
qglColor3f( tr.identityLight, tr.identityLight, tr.identityLight );
|
||||
|
|
@ -749,6 +750,7 @@ void RB_StageIteratorSky( void ) {
|
|||
qglPopMatrix();
|
||||
|
||||
Com_Memcpy(vk_world.modelview_transform, modelMatrix_original, sizeof(float[16]));
|
||||
Com_Memcpy(dx_world.modelview_transform, modelMatrix_original, sizeof(float[16]));
|
||||
}
|
||||
|
||||
// generate the vertexes for all the clouds, which will be drawn
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user