78 lines
2.6 KiB
C#
78 lines
2.6 KiB
C#
|
using Microsoft.Xna.Framework;
|
||
|
using Microsoft.Xna.Framework.Graphics;
|
||
|
|
||
|
namespace Kav
|
||
|
{
|
||
|
public class DeferredPBR_PointLightEffect : Effect
|
||
|
{
|
||
|
EffectParameter gPositionParam;
|
||
|
EffectParameter gAlbedoParam;
|
||
|
EffectParameter gNormalParam;
|
||
|
EffectParameter gMetallicRoughnessParam;
|
||
|
|
||
|
EffectParameter eyePositionParam;
|
||
|
|
||
|
EffectParameter pointLightColorParam;
|
||
|
EffectParameter pointLightPositionParam;
|
||
|
|
||
|
public Texture2D GPosition { get; set; }
|
||
|
public Texture2D GAlbedo { get; set; }
|
||
|
public Texture2D GNormal { get; set; }
|
||
|
public Texture2D GMetallicRoughness { get; set; }
|
||
|
|
||
|
public Vector3 EyePosition { get; set; }
|
||
|
|
||
|
public Vector3 PointLightPosition { get; set; }
|
||
|
public Vector3 PointLightColor { get; set; }
|
||
|
|
||
|
public DeferredPBR_PointLightEffect(GraphicsDevice graphicsDevice) : base(graphicsDevice, Resources.DeferredPBR_PointLightEffect)
|
||
|
{
|
||
|
CacheEffectParameters();
|
||
|
}
|
||
|
|
||
|
public DeferredPBR_PointLightEffect(DeferredPBR_PointLightEffect cloneSource) : base(cloneSource)
|
||
|
{
|
||
|
GPosition = cloneSource.GPosition;
|
||
|
GAlbedo = cloneSource.GAlbedo;
|
||
|
GNormal = cloneSource.GNormal;
|
||
|
GMetallicRoughness = cloneSource.GMetallicRoughness;
|
||
|
|
||
|
EyePosition = cloneSource.EyePosition;
|
||
|
|
||
|
PointLightPosition = cloneSource.PointLightPosition;
|
||
|
PointLightColor = cloneSource.PointLightColor;
|
||
|
}
|
||
|
|
||
|
public override Effect Clone()
|
||
|
{
|
||
|
return new DeferredPBR_PointLightEffect(this);
|
||
|
}
|
||
|
|
||
|
protected override void OnApply()
|
||
|
{
|
||
|
gPositionParam.SetValue(GPosition);
|
||
|
gAlbedoParam.SetValue(GAlbedo);
|
||
|
gNormalParam.SetValue(GNormal);
|
||
|
gMetallicRoughnessParam.SetValue(GMetallicRoughness);
|
||
|
|
||
|
eyePositionParam.SetValue(EyePosition);
|
||
|
|
||
|
pointLightPositionParam.SetValue(PointLightPosition);
|
||
|
pointLightColorParam.SetValue(PointLightColor);
|
||
|
}
|
||
|
|
||
|
void CacheEffectParameters()
|
||
|
{
|
||
|
gPositionParam = Parameters["gPosition"];
|
||
|
gAlbedoParam = Parameters["gAlbedo"];
|
||
|
gNormalParam = Parameters["gNormal"];
|
||
|
gMetallicRoughnessParam = Parameters["gMetallicRoughness"];
|
||
|
|
||
|
eyePositionParam = Parameters["EyePosition"];
|
||
|
|
||
|
pointLightPositionParam = Parameters["PointLightPosition"];
|
||
|
pointLightColorParam = Parameters["PointLightColor"];
|
||
|
}
|
||
|
}
|
||
|
}
|