public void Initialize(Device device) {
_b = EffectUtils.Load("DeferredGSky");
E = new Effect(device, _b);
TechSkyDeferred = E.GetTechniqueByName("SkyDeferred");
TechSkyForward = E.GetTechniqueByName("SkyForward");
for (var i = 0; i < TechSkyDeferred.Description.PassCount && InputSignatureP == null; i++) {
InputSignatureP = TechSkyDeferred.GetPassByIndex(i).Description.Signature;
}
if (InputSignatureP == null) throw new System.Exception("input signature (DeferredGSky, P, SkyDeferred) == null");
LayoutP = new InputLayout(device, InputSignatureP, InputLayouts.VerticeP.InputElementsValue);
FxWorld = E.GetVariableByName("gWorld").AsMatrix();
FxWorldInvTranspose = E.GetVariableByName("gWorldInvTranspose").AsMatrix();
FxWorldViewProj = E.GetVariableByName("gWorldViewProj").AsMatrix();
FxSkyDown = E.GetVariableByName("gSkyDown").AsVector();
FxSkyRange = E.GetVariableByName("gSkyRange").AsVector();
}