您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

86 行
1.8 KiB

//#define LEFT_HAND_COORDINATES
public struct SFiniteLightData
{
// setup constant buffer
public float fPenumbra;
public int flags;
public uint uLightType;
public uint uLightModel; // DIRECT_LIGHT=0, REFLECTION_LIGHT=1
public Vec3 vLpos;
public float fLightIntensity;
public Vec3 vLaxisX;
public float fRecipRange;
public Vec3 vLaxisY;
public float fSphRadiusSq;
public Vec3 vLaxisZ; // spot +Z axis
public float cotan;
public Vec3 vCol;
public int iSliceIndex;
public Vec3 vBoxInnerDist;
public float fDecodeExp;
public Vec3 vBoxInvRange;
public float fPad0;
public Vec3 vProbeBoxOffset;
public float fProbeBlendDistance;
};
public struct SFiniteLightBound
{
public Vec3 vBoxAxisX;
public Vec3 vBoxAxisY;
public Vec3 vBoxAxisZ;
public Vec3 vCen; // a center in camera space inside the bounding volume of the light source.
public Vec2 vScaleXY;
public float fRadius;
};
#if !__HLSL
public class LightDefinitions
{
#endif
public static int MAX_NR_LIGHTS_PER_CAMERA = 1024;
public static float VIEWPORT_SCALE_Z = 1.0f;
// flags
public static int IS_CIRCULAR_SPOT_SHAPE = 1;
public static int HAS_COOKIE_TEXTURE = 2;
public static int IS_BOX_PROJECTED = 4;
// types
public static int MAX_TYPES = 3;
public static int SPOT_LIGHT = 0;
public static int SPHERE_LIGHT = 1;
public static int BOX_LIGHT = 2;
// direct lights and reflection probes for now
public static int NR_LIGHT_MODELS = 2;
public static int DIRECT_LIGHT = 0;
public static int REFLECTION_LIGHT = 1;
#if !__HLSL
}
#endif
#if __HLSL
float FetchDepth(Texture2D depthTexture, uint2 pixCoord)
{
return /*1-*/depthTexture.Load( uint3(pixCoord.xy, 0) ).x;
}
#endif