public void Initialize(Device device) {
_b = EffectUtils.Load("DeferredGObject");
E = new Effect(device, _b);
TechStandardDeferred = E.GetTechniqueByName("StandardDeferred");
TechStandardForward = E.GetTechniqueByName("StandardForward");
TechAmbientShadowDeferred = E.GetTechniqueByName("AmbientShadowDeferred");
TechTransparentDeferred = E.GetTechniqueByName("TransparentDeferred");
TechTransparentForward = E.GetTechniqueByName("TransparentForward");
TechTransparentMask = E.GetTechniqueByName("TransparentMask");
for (var i = 0; i < TechStandardDeferred.Description.PassCount && InputSignaturePNTG == null; i++) {
InputSignaturePNTG = TechStandardDeferred.GetPassByIndex(i).Description.Signature;
}
if (InputSignaturePNTG == null) throw new System.Exception("input signature (DeferredGObject, PNTG, StandardDeferred) == null");
LayoutPNTG = new InputLayout(device, InputSignaturePNTG, InputLayouts.VerticePNTG.InputElementsValue);
for (var i = 0; i < TechAmbientShadowDeferred.Description.PassCount && InputSignaturePT == null; i++) {
InputSignaturePT = TechAmbientShadowDeferred.GetPassByIndex(i).Description.Signature;
}
if (InputSignaturePT == null) throw new System.Exception("input signature (DeferredGObject, PT, AmbientShadowDeferred) == null");
LayoutPT = new InputLayout(device, InputSignaturePT, InputLayouts.VerticePT.InputElementsValue);
FxWorld = E.GetVariableByName("gWorld").AsMatrix();
FxWorldInvTranspose = E.GetVariableByName("gWorldInvTranspose").AsMatrix();
FxWorldViewProj = E.GetVariableByName("gWorldViewProj").AsMatrix();
FxDiffuseMap = E.GetVariableByName("gDiffuseMap").AsResource();
FxNormalMap = E.GetVariableByName("gNormalMap").AsResource();
FxMapsMap = E.GetVariableByName("gMapsMap").AsResource();
FxDetailsMap = E.GetVariableByName("gDetailsMap").AsResource();
FxDetailsNormalMap = E.GetVariableByName("gDetailsNormalMap").AsResource();
FxReflectionCubemap = E.GetVariableByName("gReflectionCubemap").AsResource();
FxEyePosW = E.GetVariableByName("gEyePosW").AsVector();
FxAmbientDown = E.GetVariableByName("gAmbientDown").AsVector();
FxAmbientRange = E.GetVariableByName("gAmbientRange").AsVector();
FxLightColor = E.GetVariableByName("gLightColor").AsVector();
FxDirectionalLightDirection = E.GetVariableByName("gDirectionalLightDirection").AsVector();
FxMaterial = E.GetVariableByName("gMaterial");
}