working shader dispatch

This commit is contained in:
jacob 2025-09-19 20:57:59 -05:00
parent 6251feb451
commit 27c2e34e24
5 changed files with 103 additions and 84 deletions

View File

@ -196,6 +196,7 @@ Struct(GPU_ResourceDesc)
{
GPU_ResourceKind kind;
GPU_ResourceFlag flags;
Vec4 clear_color;
union
{
struct
@ -315,7 +316,7 @@ void GPU_FlushWritable(GPU_CommandList *cl, GPU_Resource *resource); /*
////////////////////////////////
//~ @hookdecl Dispatch operations
void GPU_Clear(GPU_CommandList *cl, GPU_Resource *resource, Vec4 clear_value);
void GPU_ClearRenderable(GPU_CommandList *cl, GPU_Resource *resource);
#define GPU_Rasterize(cl, sig_ptr, vs, ps, rts_count, viewport, scissor, instances_count, index_buffer, mode) \
GPU_Rasterize_((cl), sizeof(*(sig_ptr)), (sig_ptr), (vs), (ps), (rts_count), (viewport), (scissor), (instances_count), (index_buffer), (mode))

View File

@ -70,17 +70,20 @@ void GPU_D12_Startup(void)
}
/* Init descriptor heaps */
g->cbv_srv_uav_heap = GPU_D12_InitCpuDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
GPU_D12_MaxCbvSrvUavDescriptors,
ID3D12Device_GetDescriptorHandleIncrementSize(g->device, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV));
g->cbv_srv_uav_heap = GPU_D12_InitDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE,
GPU_D12_MaxCbvSrvUavDescriptors,
ID3D12Device_GetDescriptorHandleIncrementSize(g->device, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV));
g->sampler_heap = GPU_D12_InitCpuDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
GPU_D12_MaxSamplerDescriptors,
ID3D12Device_GetDescriptorHandleIncrementSize(g->device, D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER));
g->sampler_heap = GPU_D12_InitDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE,
GPU_D12_MaxSamplerDescriptors,
ID3D12Device_GetDescriptorHandleIncrementSize(g->device, D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER));
g->rtv_heap = GPU_D12_InitCpuDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
GPU_D12_MaxRtvDescriptors,
ID3D12Device_GetDescriptorHandleIncrementSize(g->device, D3D12_DESCRIPTOR_HEAP_TYPE_RTV));
g->rtv_heap = GPU_D12_InitDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
D3D12_DESCRIPTOR_HEAP_FLAG_NONE,
GPU_D12_MaxRtvDescriptors,
ID3D12Device_GetDescriptorHandleIncrementSize(g->device, D3D12_DESCRIPTOR_HEAP_TYPE_RTV));
/* Init rootsig */
GPU_D12_InitRootsig();
@ -265,11 +268,11 @@ JobDef(GPU_D12_InitQueue, sig, id)
//- Heap initialization
GPU_D12_CpuDescriptorHeap *GPU_D12_InitCpuDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE type, u32 max_descs, u32 desc_size)
GPU_D12_DescriptorHeap *GPU_D12_InitDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE type, D3D12_DESCRIPTOR_HEAP_FLAGS flags, u32 max_descs, u32 desc_size)
{
GPU_D12_SharedState *g = &GPU_D12_shared_state;
Arena *arena = AcquireArena(Gibi(64));
GPU_D12_CpuDescriptorHeap *heap = PushStruct(arena, GPU_D12_CpuDescriptorHeap);
GPU_D12_DescriptorHeap *heap = PushStruct(arena, GPU_D12_DescriptorHeap);
heap->arena = arena;
heap->type = type;
@ -278,6 +281,7 @@ GPU_D12_CpuDescriptorHeap *GPU_D12_InitCpuDescriptorHeap(D3D12_DESCRIPTOR_HEAP_T
D3D12_DESCRIPTOR_HEAP_DESC d3d_desc = ZI;
d3d_desc.Type = type;
d3d_desc.Flags = flags;
d3d_desc.NumDescriptors = max_descs;
HRESULT hr = ID3D12Device_CreateDescriptorHeap(g->device, &d3d_desc, &IID_ID3D12DescriptorHeap, (void **)&heap->d3d_heap);
if (FAILED(hr))
@ -515,9 +519,9 @@ GPU_D12_Queue *GPU_D12_QueueFromKind(GPU_QueueKind kind)
////////////////////////////////
//~ Descriptor operations
GPU_D12_CpuDescriptor *GPU_D12_AcquireCpuDescriptor(GPU_D12_CpuDescriptorHeap *heap)
GPU_D12_Descriptor *GPU_D12_AcquireDescriptor(GPU_D12_DescriptorHeap *heap)
{
GPU_D12_CpuDescriptor *d = 0;
GPU_D12_Descriptor *d = 0;
u32 index = 0;
D3D12_CPU_DESCRIPTOR_HANDLE handle = ZI;
{
@ -535,7 +539,7 @@ GPU_D12_CpuDescriptor *GPU_D12_AcquireCpuDescriptor(GPU_D12_CpuDescriptorHeap *h
{
Panic(Lit("Max descriptors reached in heap"));
}
d = PushStructNoZero(heap->arena, GPU_D12_CpuDescriptor);
d = PushStructNoZero(heap->arena, GPU_D12_Descriptor);
index = heap->allocated_count++;
handle.ptr = heap->start_handle.ptr + (index * heap->descriptor_size);
}
@ -548,13 +552,13 @@ GPU_D12_CpuDescriptor *GPU_D12_AcquireCpuDescriptor(GPU_D12_CpuDescriptorHeap *h
return d;
}
void GPU_D12_ReleaseCpuDescriptor(GPU_D12_CpuDescriptor *descriptor)
void GPU_D12_ReleaseDescriptor(GPU_D12_Descriptor *descriptor)
{
GPU_D12_CpuDescriptorHeap *dh = descriptor->heap;
Lock lock = LockE(&dh->mutex);
GPU_D12_DescriptorHeap *heap = descriptor->heap;
Lock lock = LockE(&heap->mutex);
{
descriptor->next_free = dh->first_free;
dh->first_free = descriptor;
descriptor->next_free = heap->first_free;
heap->first_free = descriptor;
}
Unlock(&lock);
}
@ -688,7 +692,7 @@ void GPU_D12_InitSwapchainResources(GPU_D12_Swapchain *swapchain)
ZeroStruct(sb);
sb->swapchain = swapchain;
sb->d3d_resource = resource;
sb->rtv_descriptor = GPU_D12_AcquireCpuDescriptor(g->rtv_heap);
sb->rtv_descriptor = GPU_D12_AcquireDescriptor(g->rtv_heap);
sb->state = D3D12_RESOURCE_STATE_COMMON;
ID3D12Device_CreateRenderTargetView(g->device, sb->d3d_resource, 0, sb->rtv_descriptor->handle);
}
@ -724,7 +728,7 @@ GPU_D12_SwapchainBuffer *GPU_D12_UpdateSwapchain(GPU_D12_Swapchain *swapchain, V
for (u32 i = 0; i < countof(swapchain->buffers); ++i)
{
GPU_D12_SwapchainBuffer *sb = &swapchain->buffers[i];
GPU_D12_ReleaseCpuDescriptor(sb->rtv_descriptor);
GPU_D12_ReleaseDescriptor(sb->rtv_descriptor);
ID3D12Resource_Release(sb->d3d_resource);
}
@ -875,14 +879,24 @@ void GPU_QueueWait(GPU_QueueKind a, GPU_QueueKind b, i64 b_target_fence_value)
GPU_Viewport GPU_ViewportFromRect(Rect rect)
{
/* TODO */
return (GPU_Viewport) ZI;
GPU_Viewport viewport = ZI;
viewport.top_left_x = rect.x;
viewport.top_left_y = rect.y;
viewport.width = rect.width;
viewport.height = rect.height;
viewport.min_depth = 0.0f;
viewport.max_depth = 1.0f;
return viewport;
}
GPU_Scissor GPU_ScissorFromRect(Rect rect)
{
/* TODO */
return (GPU_Scissor) ZI;
GPU_Scissor scissor = ZI;
scissor.left = rect.x;
scissor.top = rect.y;
scissor.right = rect.x + rect.width;
scissor.bottom = rect.y + rect.height;
return scissor;
}
////////////////////////////////
@ -1013,6 +1027,10 @@ GPU_Resource *GPU_AcquireResource(GPU_ResourceDesc desc)
d3d_desc.Flags |= D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET * !!(desc.flags & GPU_ResourceFlag_Renderable);
r->state = D3D12_RESOURCE_STATE_COPY_DEST;
D3D12_CLEAR_VALUE clear_value = { .Format = d3d_desc.Format, .Color = { 0 } };
clear_value.Color[0] = desc.clear_color.x;
clear_value.Color[1] = desc.clear_color.y;
clear_value.Color[2] = desc.clear_color.z;
clear_value.Color[3] = desc.clear_color.w;
D3D12_CLEAR_VALUE *clear_value_ptr = d3d_desc.Flags & D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET ? &clear_value : 0;
HRESULT hr = ID3D12Device_CreateCommittedResource(g->device, &heap_props, heap_flags, &d3d_desc, r->state, clear_value_ptr, &IID_ID3D12Resource, (void **)&r->d3d_resource);
if (FAILED(hr))
@ -1030,7 +1048,7 @@ GPU_Resource *GPU_AcquireResource(GPU_ResourceDesc desc)
|| desc.kind == GPU_ResourceKind_Texture2D
|| desc.kind == GPU_ResourceKind_Texture3D)
{
r->srv_descriptor = GPU_D12_AcquireCpuDescriptor(g->cbv_srv_uav_heap);
r->srv_descriptor = GPU_D12_AcquireDescriptor(g->cbv_srv_uav_heap);
ID3D12Device_CreateShaderResourceView(g->device, r->d3d_resource, 0, r->srv_descriptor->handle);
}
@ -1047,21 +1065,21 @@ GPU_Resource *GPU_AcquireResource(GPU_ResourceDesc desc)
srv_desc.Buffer.NumElements = MaxU32(desc.buffer.element_count, 1);
srv_desc.Buffer.StructureByteStride = desc.buffer.element_size;
srv_desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
r->srv_descriptor = GPU_D12_AcquireCpuDescriptor(g->cbv_srv_uav_heap);
r->srv_descriptor = GPU_D12_AcquireDescriptor(g->cbv_srv_uav_heap);
ID3D12Device_CreateShaderResourceView(g->device, r->d3d_resource, &srv_desc, r->srv_descriptor->handle);
}
/* Create uav descriptor */
if (desc.flags & GPU_ResourceFlag_Writable)
{
r->uav_descriptor = GPU_D12_AcquireCpuDescriptor(g->cbv_srv_uav_heap);
r->uav_descriptor = GPU_D12_AcquireDescriptor(g->cbv_srv_uav_heap);
ID3D12Device_CreateUnorderedAccessView(g->device, r->d3d_resource, 0, 0, r->uav_descriptor->handle);
}
/* Create rtv descriptor */
if (desc.flags & GPU_ResourceFlag_Renderable)
{
r->rtv_descriptor = GPU_D12_AcquireCpuDescriptor(g->rtv_heap);
r->rtv_descriptor = GPU_D12_AcquireDescriptor(g->rtv_heap);
ID3D12Device_CreateRenderTargetView(g->device, r->d3d_resource, 0, r->rtv_descriptor->handle);
}
@ -1098,19 +1116,19 @@ void GPU_ReleaseResource(GPU_Resource *gpu_resource, GPU_ReleaseFlag flags)
if (r->srv_descriptor)
{
GPU_D12_ReleaseCpuDescriptor(r->srv_descriptor);
GPU_D12_ReleaseDescriptor(r->srv_descriptor);
}
if (r->uav_descriptor)
{
GPU_D12_ReleaseCpuDescriptor(r->uav_descriptor);
GPU_D12_ReleaseDescriptor(r->uav_descriptor);
}
if (r->rtv_descriptor)
{
GPU_D12_ReleaseCpuDescriptor(r->uav_descriptor);
GPU_D12_ReleaseDescriptor(r->rtv_descriptor);
}
if (r->sampler_descriptor)
{
GPU_D12_ReleaseCpuDescriptor(r->sampler_descriptor);
GPU_D12_ReleaseDescriptor(r->sampler_descriptor);
}
Lock lock = LockE(&g->free_resources_mutex);
@ -1320,11 +1338,17 @@ i64 GPU_EndCommandList(GPU_CommandList *gpu_cl)
}
} break;
//- Clear resource
case GPU_D12_CommandKind_Clear:
//- Clear rtv
case GPU_D12_CommandKind_ClearRtv:
{
/* TODO */
/* TODO: Set descriptor heaps if UAV copy */
GPU_D12_Resource *resource = cmd->clear.resource;
Assert(resource->state == D3D12_RESOURCE_STATE_RENDER_TARGET);
f32 clear_color[4] = ZI;
clear_color[0] = resource->desc.clear_color.x;
clear_color[1] = resource->desc.clear_color.y;
clear_color[2] = resource->desc.clear_color.z;
clear_color[3] = resource->desc.clear_color.w;
ID3D12GraphicsCommandList_ClearRenderTargetView(rcl, resource->rtv_descriptor->handle, clear_color, 0, 0);
cmd = cmd->next;
} break;
@ -1395,20 +1419,12 @@ i64 GPU_EndCommandList(GPU_CommandList *gpu_cl)
&& cmd->rasterize.index_buffer->desc.buffer.element_count > 0)
{
/* Set descriptor heaps */
#if 0
if (!descriptor_heaps_set)
{
{
ID3D12DescriptorHeap *heap = g->cbv_srv_uav_heap;
Lock lock = LockS(&heap->mutex);
ID3D12Device_CopyDescriptorsSimple(g->device, heap->allocated_count, cdh->start_cpu_handle, dh_cpu->handle, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
Unlock(&lock);
}
ID3D12DescriptorHeap *heaps[] = { cl->gpu_cbv_srv_uav_heap, cl->gpu_sampler_heap };
ID3D12GraphicsCommandList_SetDescriptorHeaps(cl->cl, countof(heaps), heaps);
ID3D12DescriptorHeap *heaps[] = { g->cbv_srv_uav_heap->d3d_heap, g->sampler_heap->d3d_heap };
ID3D12GraphicsCommandList_SetDescriptorHeaps(rcl, countof(heaps), heaps);
descriptor_heaps_set = 1;
}
#endif
/* Bind rootsig */
if (!graphics_rootsig_set)
@ -1510,7 +1526,7 @@ i64 GPU_EndCommandList(GPU_CommandList *gpu_cl)
}
/* Dispatch */
ID3D12GraphicsCommandList_DrawIndexedInstanced(rcl, cmd->rasterize.instances_count, indices_count, 0, 0, 0);
ID3D12GraphicsCommandList_DrawIndexedInstanced(rcl, indices_count, cmd->rasterize.instances_count, 0, 0, 0);
}
cmd = cmd->next;
@ -1528,6 +1544,14 @@ i64 GPU_EndCommandList(GPU_CommandList *gpu_cl)
if (pipeline)
{
/* Set descriptor heaps */
if (!descriptor_heaps_set)
{
ID3D12DescriptorHeap *heaps[] = { g->cbv_srv_uav_heap->d3d_heap, g->sampler_heap->d3d_heap };
ID3D12GraphicsCommandList_SetDescriptorHeaps(rcl, countof(heaps), heaps);
descriptor_heaps_set = 1;
}
/* Bind rootsig */
if (!compute_rootsig_set)
{
@ -1635,13 +1659,12 @@ void GPU_FlushWritable(GPU_CommandList *cl, GPU_Resource *resource)
////////////////////////////////
//~ @hookdef Dispatch hooks
void GPU_Clear(GPU_CommandList *gpu_cl, GPU_Resource *resource, Vec4 clear_value)
void GPU_ClearRenderable(GPU_CommandList *gpu_cl, GPU_Resource *resource)
{
GPU_D12_CommandList *cl = (GPU_D12_CommandList *)gpu_cl;
GPU_D12_Command *cmd = GPU_D12_PushCmd(cl);
cmd->kind = GPU_D12_CommandKind_Clear;
cmd->kind = GPU_D12_CommandKind_ClearRtv;
cmd->clear.resource = (GPU_D12_Resource *)resource;
cmd->clear.value = clear_value;
}
void GPU_Rasterize_(GPU_CommandList *gpu_cl,
@ -1875,7 +1898,6 @@ i64 GPU_PresentSwapchain(GPU_Swapchain *gpu_swapchain, GPU_Resource *gpu_texture
ID3D12Resource_GetDesc(swapchain_buffer->d3d_resource, &dst_desc);
b32 is_blitable = src_desc.Dimension == dst_desc.Dimension
&& src_desc.Format == dst_desc.Format
&& src_desc.SampleDesc.Count == dst_desc.SampleDesc.Count
&& src_desc.SampleDesc.Quality == dst_desc.SampleDesc.Quality
&& src_desc.Width == dst_desc.Width

View File

@ -56,16 +56,16 @@ Struct(GPU_D12_PipelineBin)
////////////////////////////////
//~ Descriptor types
Struct(GPU_D12_CpuDescriptor)
Struct(GPU_D12_Descriptor)
{
GPU_D12_CpuDescriptor *next_free;
struct GPU_D12_CpuDescriptorHeap *heap;
GPU_D12_Descriptor *next_free;
struct GPU_D12_DescriptorHeap *heap;
u32 index;
D3D12_CPU_DESCRIPTOR_HANDLE handle;
};
Struct(GPU_D12_CpuDescriptorHeap)
Struct(GPU_D12_DescriptorHeap)
{
Arena *arena;
@ -75,7 +75,7 @@ Struct(GPU_D12_CpuDescriptorHeap)
D3D12_CPU_DESCRIPTOR_HANDLE start_handle;
Mutex mutex;
GPU_D12_CpuDescriptor *first_free;
GPU_D12_Descriptor *first_free;
u32 allocated_count;
u32 max_count;
};
@ -92,10 +92,10 @@ Struct(GPU_D12_Resource)
D3D12_RESOURCE_STATES state;
u64 reuse_hash;
GPU_D12_CpuDescriptor *srv_descriptor;
GPU_D12_CpuDescriptor *uav_descriptor;
GPU_D12_CpuDescriptor *rtv_descriptor;
GPU_D12_CpuDescriptor *sampler_descriptor;
GPU_D12_Descriptor *srv_descriptor;
GPU_D12_Descriptor *uav_descriptor;
GPU_D12_Descriptor *rtv_descriptor;
GPU_D12_Descriptor *sampler_descriptor;
D3D12_GPU_VIRTUAL_ADDRESS buffer_gpu_address;
};
@ -137,9 +137,6 @@ Struct(GPU_D12_RawCommandList)
ID3D12CommandAllocator *ca;
ID3D12GraphicsCommandList *cl;
ID3D12DescriptorHeap *gpu_cbv_srv_uav_heap;
ID3D12DescriptorHeap *gpu_sampler_heap;
};
////////////////////////////////
@ -161,7 +158,7 @@ Enum(GPU_D12_CommandKind)
GPU_D12_CommandKind_Copy,
/* Clear */
GPU_D12_CommandKind_Clear,
GPU_D12_CommandKind_ClearRtv,
/* Rasterize */
GPU_D12_CommandKind_Rasterize,
@ -190,7 +187,6 @@ Struct(GPU_D12_Command)
struct
{
GPU_D12_Resource *resource;
Vec4 value;
} clear;
struct
{
@ -234,7 +230,7 @@ Struct(GPU_D12_SwapchainBuffer)
{
struct GPU_D12_Swapchain *swapchain;
ID3D12Resource *d3d_resource;
GPU_D12_CpuDescriptor *rtv_descriptor;
GPU_D12_Descriptor *rtv_descriptor;
D3D12_RESOURCE_STATES state;
};
@ -273,9 +269,9 @@ Struct(GPU_D12_SharedState)
GPU_D12_PipelineBin pipeline_bins[1024];
/* Descriptor heaps */
GPU_D12_CpuDescriptorHeap *cbv_srv_uav_heap;
GPU_D12_CpuDescriptorHeap *sampler_heap;
GPU_D12_CpuDescriptorHeap *rtv_heap;
GPU_D12_DescriptorHeap *cbv_srv_uav_heap;
GPU_D12_DescriptorHeap *sampler_heap;
GPU_D12_DescriptorHeap *rtv_heap;
/* Resources */
Mutex free_resources_mutex;
@ -314,7 +310,7 @@ void GPU_D12_InitDevice(void);
JobDecl(GPU_D12_InitQueue, { GPU_D12_QueueDesc *descs; });
//- Heap initialization
GPU_D12_CpuDescriptorHeap *GPU_D12_InitCpuDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE type, u32 max_descs, u32 desc_size);
GPU_D12_DescriptorHeap *GPU_D12_InitDescriptorHeap(D3D12_DESCRIPTOR_HEAP_TYPE type, D3D12_DESCRIPTOR_HEAP_FLAGS flags, u32 max_descs, u32 desc_size);
//- Rootsig initialization
void GPU_D12_InitRootsig(void);
@ -333,8 +329,8 @@ GPU_D12_Queue *GPU_D12_QueueFromKind(GPU_QueueKind kind);
////////////////////////////////
//~ Descriptor operations
GPU_D12_CpuDescriptor *GPU_D12_AcquireCpuDescriptor(GPU_D12_CpuDescriptorHeap *heap);
void GPU_D12_ReleaseCpuDescriptor(GPU_D12_CpuDescriptor *descriptor);
GPU_D12_Descriptor *GPU_D12_AcquireDescriptor(GPU_D12_DescriptorHeap *heap);
void GPU_D12_ReleaseDescriptor(GPU_D12_Descriptor *descriptor);
////////////////////////////////
//~ Raw command list operations

View File

@ -2222,8 +2222,8 @@ void UpdateUser(P_Window *window)
GPU_ProfN(cl, Lit("Clear gbuffers"));
GPU_TransitionToRenderable(cl, g->albedo, 0);
GPU_TransitionToRenderable(cl, g->emittance, 1);
GPU_Clear(cl, g->albedo, VEC4(0, 0, 0, 0));
GPU_Clear(cl, g->emittance, VEC4(0, 0, 0, 0));
GPU_ClearRenderable(cl, g->albedo);
GPU_ClearRenderable(cl, g->emittance);
}
//- Material pass
@ -2311,7 +2311,6 @@ void UpdateUser(P_Window *window)
GPU_TransitionToWritable(cl, g->shade_target);
GPU_FlushWritable(cl, g->emittance_flood_read);
GPU_FlushWritable(cl, g->shade_read);
GPU_Clear(cl, g->shade_target, VEC4(0, 0, 0, 0));
}
//- Shade pass
@ -2351,9 +2350,9 @@ void UpdateUser(P_Window *window)
{
__profn("Clear ui target");
GPU_ProfN(cl, Lit("Clear ui target"));
GPU_TransitionToRenderable(cl, g->ui_target, 0);
GPU_FlushWritable(cl, g->shade_read);
GPU_Clear(cl, g->ui_target, VEC4(0, 0, 0, 0));
GPU_TransitionToRenderable(cl, g->ui_target, 0);
GPU_ClearRenderable(cl, g->ui_target);
}
//- Ui blit pass

View File

@ -361,7 +361,13 @@ UiBlitPS_Output PSDef(UiBlitPS, UiBlitPS_Input input)
color = pow(abs(color), 1/sig.gamma);
}
/* FIXME: Enable this */
#if 0
output.SV_Target = color;
#else
output.SV_Target = Vec4(1, 0, 0, 1);
#endif
return output;
}
@ -458,11 +464,6 @@ UiShapePS_Input VSDef(UiShapeVS, Semantic(u32, SV_VertexID))
UiShapePS_Output PSDef(UiShapePS, UiShapePS_Input input)
{
UiShapePS_Output output;
/* FIXME: Enable this */
#if 0
output.SV_Target = input.color_srgb;
#else
output.SV_Target = Vec4(1, 0, 0, 1);
#endif
return output;
}