Search Issue Tracker

In Progress

Under Consideration for 2021.3.X, 2022.3.X

Won't Fix in 2023.2.X

Votes

0

Found in

2021.3.35f1

2022.3.20f1

2023.2.10f1

2023.3.0b7

2024.1.0a1

6000.0.0b11

Issue ID

UUM-64323

Regression

No

HLSLcc generates suboptimal code that involves meaningless double conversions

--

-

*Steps to reproduce:*

1. Create a new unlit shader
2. Put the following code in the fragment function:
```
int x[3][3][3] = {
{ { -1, -2, -1 }, { -2, -4, -2 }, { -1, -2, -1 } },
{ { +0, +0, +0 }, { +0, +0, +0 }, { +0, +0, +0 } },
{ { +1, +2, +1 }, { +2, +4, +2 }, { +1, +2, +1 } }
};
half4 col = tex2D(_MainTex, i.uv);
return col * half4(x[0][0][0], x[1][1][1], x[2][2][2], 1.0);
```
3. Inspect the shader code compiled for GLES3 (same code is used for Vulkan and WebGL/WebGPU).

*Actual results:* 
The data from the array 'x' gets stored as floats using 'intBitsToFloat', then gets converted back to int using 'floatBitsToInt', then gets converted to float using the regular cast.
*Expected results:* 
No interim conversions between bit representations happen.

*Reproducible with versions:* 
2024.1, 2023.3, 2023.2, 2022.3, 2021.3

  1. Resolution Note (2023.2.X):

    Closing as Won't fix due to 2023.2 reaching it's EOL.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.