Search Issue Tracker

Fixed in Unity 2017.1

Votes

2

Found in

5.5.0p4

Issue ID

898788

Regression

No

[Metal] Half-precision literal in HLSL is translated to float literal by Metal shader compiler

Shaders

-

-

Priority: 7Not yet prioritized for a release

-

Severity: 3Workaround is possible

Reproduction steps:
1) Open the attached project (HLSLHalfLiteralBecomesMetalFloatLiteral.zip).
2) Open "MobileBloom.shader".
3) Observe the literal "half4(0.01h, 0.01h, 0.01h, 0.01h)" in "half4 fragBloom ( v2f_simple i ) : SV_Target".
4) Select "MobileBloom.shader".
5) Open drop-down menu of the "Compile and show code" button in the inspector window.
6) Tick "Custom:", then under "Custom:" tick "Metal".
7) Push the "Compile and show code" button to view View "Compiled-Hidden-FastBloom.shader" file.
8) Observe the literal "float4(0.00999999978, 0.00999999978, 0.00999999978, 0.00999999978)" in "fragment Mtl_FragmentOut xlatMtlMain".

This doesn't occur when compiling to OpenGL.

Actual behavior:
- float4(0.00999999978, 0.00999999978, 0.00999999978, 0.00999999978) is generated in the Metal shader.

Expected behavior:
- half4(0.01h, 0.01h, 0.01h, 0.01h) is generated in the Metal shader.

Reproduced with:
2017.1.0b1, 5.6.0f3, 5.5.0p4

All about bugs

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