Skip to content

Commit 77ec3d5

Browse files
committed
check range on tonemap output
1 parent d46e463 commit 77ec3d5

3 files changed

Lines changed: 11 additions & 1 deletion

File tree

26_Autoexposure/app_resources/avg_luma_tonemap.comp.hlsl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@ void main(uint32_t3 ID : SV_GroupThreadID, uint32_t3 GroupID : SV_GroupID)
8686
uint32_t2 coord = _static_cast<uint32_t2>(mc);
8787

8888
uint32_t2 pos = (glsl::gl_WorkGroupID() * glsl::gl_WorkGroupSize()).xy + coord;
89+
uint32_t texWidth, texHeight;
90+
textureOut.GetDimensions(texWidth, texHeight);
91+
if (any(pos < promote<uint32_t2>(0u)) || any(pos > uint32_t2(texWidth, texHeight)))
92+
return;
93+
8994
float32_t2 uv = (float32_t2)(pos) / pushData.viewportSize;
9095
float32_t3 color = colorspace::eotf::sRGB(tex.get(uv).rgb);
9196
float32_t3 CIEColor = mul(colorspace::sRGBtoXYZ, color);

26_Autoexposure/app_resources/median_luma_tonemap.comp.hlsl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@ void main(uint32_t3 ID : SV_GroupThreadID, uint32_t3 GroupID : SV_GroupID)
9292
uint32_t2 coord = _static_cast<uint32_t2>(mc);
9393

9494
uint32_t2 pos = (glsl::gl_WorkGroupID() * glsl::gl_WorkGroupSize()).xy + coord;
95+
uint32_t texWidth, texHeight;
96+
textureOut.GetDimensions(texWidth, texHeight);
97+
if (any(pos < promote<uint32_t2>(0u)) || any(pos > uint32_t2(texWidth, texHeight)))
98+
return;
99+
95100
float32_t2 uv = (float32_t2)(pos) / pushData.viewportSize;
96101
float32_t3 color = colorspace::eotf::sRGB(tex.get(uv).rgb);
97102
float32_t3 CIEColor = mul(colorspace::sRGBtoXYZ, color);

26_Autoexposure/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class AutoexposureApp final : public SimpleWindowedApplication, public BuiltinRe
4242
"app_resources/median_luma_tonemap.comp.hlsl",
4343
"app_resources/present.frag.hlsl"
4444
};
45-
constexpr static inline MeteringMode MeterMode = MeteringMode::MEDIAN;
45+
constexpr static inline MeteringMode MeterMode = MeteringMode::AVERAGE;
4646
constexpr static inline uint32_t BinCount = 1024;
4747
constexpr static inline uint32_t2 Dimensions = { 1280, 720 };
4848
constexpr static inline float32_t2 MeteringMinUV = { 0.1f, 0.1f };

0 commit comments

Comments
 (0)