Define SCRGB_NITS for use in HDR color calculations

This commit is contained in:
Sam Lantinga
2026-07-23 08:09:02 -07:00
parent b9d64c45a9
commit 148241117b
7 changed files with 20 additions and 14 deletions

View File

@@ -5448,7 +5448,7 @@ SDL_Surface *SDL_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rect *rect)
SDL_PixelFormat expected_format = (parent ? parent->format : target->format);
if (SDL_COLORSPACETRANSFER(target->colorspace) == SDL_TRANSFER_CHARACTERISTICS_PQ) {
SDL_SetFloatProperty(props, SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT, target->SDR_white_point * 80.0f);
SDL_SetFloatProperty(props, SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT, target->SDR_white_point * SCRGB_NITS);
} else {
SDL_SetFloatProperty(props, SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT, target->SDR_white_point);
}
@@ -5464,7 +5464,7 @@ SDL_Surface *SDL_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rect *rect)
}
} else {
if (SDL_COLORSPACETRANSFER(renderer->output_colorspace) == SDL_TRANSFER_CHARACTERISTICS_PQ) {
SDL_SetFloatProperty(props, SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT, renderer->SDR_white_point * 80.0f);
SDL_SetFloatProperty(props, SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT, renderer->SDR_white_point * SCRGB_NITS);
} else {
SDL_SetFloatProperty(props, SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT, renderer->SDR_white_point);
}

View File

@@ -2681,9 +2681,9 @@ static bool D3D11_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd
color.b *= cmd->data.color.color_scale;
if (renderer->current_colorspace == SDL_COLORSPACE_HDR10) {
color.r = SDL_PQfromNits(color.r * 80.0f);
color.g = SDL_PQfromNits(color.g * 80.0f);
color.b = SDL_PQfromNits(color.b * 80.0f);
color.r = SDL_PQfromNits(color.r * SCRGB_NITS);
color.g = SDL_PQfromNits(color.g * SCRGB_NITS);
color.b = SDL_PQfromNits(color.b * SCRGB_NITS);
}
ID3D11DeviceContext_ClearRenderTargetView(rendererData->d3dContext, D3D11_GetCurrentRenderTargetView(renderer), &color.r);

View File

@@ -3174,9 +3174,9 @@ static bool D3D12_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd
color.b *= cmd->data.color.color_scale;
if (renderer->current_colorspace == SDL_COLORSPACE_HDR10) {
color.r = SDL_PQfromNits(color.r * 80.0f);
color.g = SDL_PQfromNits(color.g * 80.0f);
color.b = SDL_PQfromNits(color.b * 80.0f);
color.r = SDL_PQfromNits(color.r * SCRGB_NITS);
color.g = SDL_PQfromNits(color.g * SCRGB_NITS);
color.b = SDL_PQfromNits(color.b * SCRGB_NITS);
}
ID3D12GraphicsCommandList2_ClearRenderTargetView(rendererData->commandList, rtvDescriptor, &color.r, 0, NULL);

View File

@@ -4166,9 +4166,9 @@ static bool VULKAN_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cm
color.b *= cmd->data.color.color_scale;
if (renderer->current_colorspace == SDL_COLORSPACE_HDR10) {
color.r = SDL_PQfromNits(color.r * 80.0f);
color.g = SDL_PQfromNits(color.g * 80.0f);
color.b = SDL_PQfromNits(color.b * 80.0f);
color.r = SDL_PQfromNits(color.r * SCRGB_NITS);
color.g = SDL_PQfromNits(color.g * SCRGB_NITS);
color.b = SDL_PQfromNits(color.b * SCRGB_NITS);
}
VkClearColorValue clearColor;