public WaterSubMesh(Mesh mesh, RenderTarget2D reflectionBuffer, RenderTarget2D refractionBuffer, Texture2D offsetMap, Texture2D normalMap) : base(mesh) { m_ReflectionTarget = reflectionBuffer; m_RefractionTarget = refractionBuffer; m_OffsetMap = offsetMap; m_NormalMap = normalMap; }
public WaterSubMesh(Mesh mesh) : base(mesh) { }
public SkySphereSubMesh(Mesh mesh) : base(mesh) { }
protected virtual SubMesh CreateSubMesh(Mesh mesh) { return new SubMesh(mesh); }
protected override SubMesh CreateSubMesh(Mesh mesh) { return new SkySphereSubMesh(mesh); }
protected override SubMesh CreateSubMesh(Mesh mesh) { return new WaterSubMesh(mesh, m_ReflectionTarget, m_RefractionTarget, m_OffsetMap, m_NormalMap); }
public SubMesh(Mesh parent) { m_Parent = parent; }
private void DeferShadowMesh(Mesh mesh) { if (mesh != null) { if (!m_ShadowedMeshes.Contains(mesh)) m_ShadowedMeshes.Add(mesh); } }
/// <summary> /// Call this for every mesh you create, so it sets the GBuffer textures only once /// </summary> /// <param name="mesh"></param> private void SetupMesh(Mesh mesh) { Camera3D camera = (CameraManager.Instance.ActiveCamera as Camera3D); if (mesh.SubMeshes.Count > 0) { foreach (SubMesh subMesh in mesh.SubMeshes) { if (subMesh.RenderEffect != null) { subMesh.RenderEffect.SetLightBuffer(m_LightTarget); subMesh.RenderEffect.SetLightBufferPixelSize(m_HalfPixel); subMesh.RenderEffect.SetAmbientColor(AmbientLighting); subMesh.RenderEffect.SetFogProperties(m_FogProperties); subMesh.RenderEffect.SetToneMappingProperties(m_ToneMappingProperties); subMesh.RenderEffect.EnableLighting(subMesh.MetaData.EnableLighting); subMesh.RenderEffect.EnableNormalMap(subMesh.MetaData.UseNormalMap); subMesh.RenderEffect.SetDepthBuffer(m_SecondaryDepthTarget); if (camera != null) subMesh.RenderEffect.SetFarClip(camera.FarPlane); } } } // If it is shadowed add it to the shadow buffer ( if it hasn't already ) if (mesh.CastShadows) DeferShadowMesh(mesh); }