Fix: Bit shifting of the 32-bit value with a subsequent expansion to the 64-bit type.

We now shift the 64-bit value, which is now treated correctly.
This commit is contained in:
bank 2014-05-06 12:37:53 +04:00
parent 6275942acb
commit 5c986f755a
2 changed files with 3 additions and 3 deletions

View file

@ -333,7 +333,7 @@ Var* GBufferConditionerHLSL::_conditionOutput( Var *unconditionedOutput, MultiLi
// Encode depth into two channels
if(mNormalStorageType != CartesianXYZ)
{
const U64 maxValPerChannel = 1 << mBitsPerChannel;
const U64 maxValPerChannel = (U64)1 << mBitsPerChannel;
meta->addStatement( new GenOp( " \r\n // Encode depth into hi/lo\r\n" ) );
meta->addStatement( new GenOp( avar( " float2 _tempDepth = frac(@.a * float2(1.0, %llu.0));\r\n", maxValPerChannel - 1 ),
unconditionedOutput ) );
@ -391,7 +391,7 @@ Var* GBufferConditionerHLSL::_unconditionInput( Var *conditionedInput, MultiLine
// Recover depth from encoding
if(mNormalStorageType != CartesianXYZ)
{
const U64 maxValPerChannel = 1 << mBitsPerChannel;
const U64 maxValPerChannel = (U64)1 << mBitsPerChannel;
meta->addStatement( new GenOp( " \r\n // Decode depth\r\n" ) );
meta->addStatement( new GenOp( avar( " @.w = dot( @.zw, float2(1.0, 1.0/%llu.0));\r\n", maxValPerChannel - 1 ),
retVar, conditionedInput ) );

View file

@ -849,7 +849,7 @@ void TerrCell::_updateMaterials()
if ( index == U8_MAX || index > 63 )
continue;
mMaterials |= (U64)(1<<index);
mMaterials |= (U64)((U64)1<<index);
}
}