You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

35 lines
1.7 KiB

#ifndef WATER_TILE_CLASSIFICATION_H
#define WATER_TILE_CLASSIFICATION_H
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoop.cs.hlsl"
#define NUM_WATER_VARIANTS 5
// Combination need to be define in increasing "comlexity" order as define by FeatureFlagsToTileVariant
static const uint kWaterFeatureVariantFlags[NUM_WATER_VARIANTS + 1] =
{
// Default lighting
/* 0 */ LIGHTFEATUREFLAGS_SKY | LIGHTFEATUREFLAGS_DIRECTIONAL | LIGHTFEATUREFLAGS_SSREFLECTION | LIGHTFEATUREFLAGS_SSREFRACTION,
// Default lighting + Punctual
/* 1 */ LIGHTFEATUREFLAGS_SKY | LIGHTFEATUREFLAGS_DIRECTIONAL | LIGHTFEATUREFLAGS_SSREFLECTION | LIGHTFEATUREFLAGS_SSREFRACTION | LIGHTFEATUREFLAGS_PUNCTUAL,
// Default lighting + Env
/* 2 */ LIGHTFEATUREFLAGS_SKY | LIGHTFEATUREFLAGS_DIRECTIONAL | LIGHTFEATUREFLAGS_SSREFLECTION | LIGHTFEATUREFLAGS_SSREFRACTION | LIGHTFEATUREFLAGS_ENV,
// Default lighting + Punctual + Env
/* 3 */ LIGHTFEATUREFLAGS_SKY | LIGHTFEATUREFLAGS_DIRECTIONAL | LIGHTFEATUREFLAGS_SSREFLECTION | LIGHTFEATUREFLAGS_SSREFRACTION | LIGHTFEATUREFLAGS_PUNCTUAL | LIGHTFEATUREFLAGS_ENV,
// Default lighting + Punctual + Env + Area
/* 4 */ LIGHTFEATUREFLAGS_SKY | LIGHTFEATUREFLAGS_DIRECTIONAL | LIGHTFEATUREFLAGS_SSREFLECTION | LIGHTFEATUREFLAGS_SSREFRACTION | LIGHTFEATUREFLAGS_PUNCTUAL | LIGHTFEATUREFLAGS_ENV | LIGHTFEATUREFLAGS_AREA,
// Used for indirect dispatches for all water pixels
/* 5 */ 0
};
uint FeatureFlagsToTileVariant_Water(uint featureFlags)
{
for (int i = 0; i < NUM_WATER_VARIANTS; i++)
{
if ((featureFlags & kWaterFeatureVariantFlags[i]) == featureFlags)
return i;
}
return NUM_WATER_VARIANTS - 1;
}
#endif //