mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-08-02 13:38:58 +00:00
Define SCRGB_NITS for use in HDR color calculations
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user