//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- void EffectNodeRing::Rendering(const Instance& instance, Manager* manager) { const InstanceValues& instValues = instance.rendererValues.ring; RingRenderer* renderer = manager->GetRingRenderer(); if( renderer != NULL ) { RingRenderer::NodeParameter nodeParameter; nodeParameter.EffectPointer = GetEffect(); nodeParameter.AlphaBlend = AlphaBlend; nodeParameter.TextureFilter = Texture.FilterType; nodeParameter.TextureWrap = Texture.WrapType; nodeParameter.ZTest = Texture.ZTest; nodeParameter.ZWrite = Texture.ZWrite; nodeParameter.Billboard = Billboard; nodeParameter.VertexCount = VertexCount; nodeParameter.ColorTextureIndex = RingTexture; RingRenderer::InstanceParameter instanceParameter; instanceParameter.SRTMatrix43 = instance.GetGlobalMatrix43(); instanceParameter.ViewingAngle = instValues.viewingAngle.current; instValues.outerLocation.current.setValueToArg( instanceParameter.OuterLocation ); instValues.innerLocation.current.setValueToArg( instanceParameter.InnerLocation ); instanceParameter.CenterRatio = instValues.centerRatio.current; instValues.outerColor.current.setValueToArg( instanceParameter.OuterColor ); instValues.centerColor.current.setValueToArg( instanceParameter.CenterColor ); instValues.innerColor.current.setValueToArg( instanceParameter.InnerColor ); float fadeAlpha = GetFadeAlpha( instance ); if( fadeAlpha != 1.0f ) { instanceParameter.OuterColor.A = (uint8_t)(instanceParameter.OuterColor.A * fadeAlpha); instanceParameter.CenterColor.A = (uint8_t)(instanceParameter.CenterColor.A * fadeAlpha); instanceParameter.InnerColor.A = (uint8_t)(instanceParameter.InnerColor.A * fadeAlpha); } instanceParameter.UV = instance.GetUV(); renderer->Rendering( nodeParameter, instanceParameter, m_userData ); } }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- void EffectNodeModel::Rendering(const Instance& instance, Manager* manager) { const InstanceValues& instValues = instance.rendererValues.model; ModelRenderer* renderer = manager->GetModelRenderer(); if( renderer != NULL ) { ModelRenderer::NodeParameter nodeParameter; nodeParameter.AlphaBlend = AlphaBlend; nodeParameter.TextureFilter = Texture.FilterType; nodeParameter.TextureWrap = Texture.WrapType; nodeParameter.ZTest = Texture.ZTest; nodeParameter.ZWrite = Texture.ZWrite; nodeParameter.EffectPointer = GetEffect(); nodeParameter.ModelIndex = ModelIndex; nodeParameter.ColorTextureIndex = Texture.ColorTextureIndex; nodeParameter.Culling = Culling; nodeParameter.Lighting = Lighting; nodeParameter.NormalTextureIndex = NormalTextureIndex; nodeParameter.Magnification = m_effect->GetMaginification(); nodeParameter.IsRightHand = manager->GetCoordinateSystem() == COORDINATE_SYSTEM_RH; ModelRenderer::InstanceParameter instanceParameter; instanceParameter.SRTMatrix43 = instance.GetGlobalMatrix43(); instanceParameter.UV = instance.GetUV(); instValues._color.setValueToArg( instanceParameter.AllColor ); float fadeAlpha = GetFadeAlpha( instance ); if( fadeAlpha != 1.0f ) { instanceParameter.AllColor.A = (uint8_t)(instanceParameter.AllColor.A * fadeAlpha); } renderer->Rendering( nodeParameter, instanceParameter, m_userData ); } }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- void EffectNodeSprite::Rendering(const Instance& instance, Manager* manager) { const InstanceValues& instValues = instance.rendererValues.sprite; SpriteRenderer* renderer = manager->GetSpriteRenderer(); if( renderer != NULL ) { SpriteRenderer::NodeParameter nodeParameter; nodeParameter.AlphaBlend = AlphaBlend; nodeParameter.TextureFilter = Texture.FilterType; nodeParameter.TextureWrap = Texture.WrapType; nodeParameter.ZTest = Texture.ZTest; nodeParameter.ZWrite = Texture.ZWrite; nodeParameter.Billboard = Billboard; nodeParameter.ColorTextureIndex = SpriteTexture; nodeParameter.EffectPointer = GetEffect(); SpriteRenderer::InstanceParameter instanceParameter; instValues._color.setValueToArg( instanceParameter.AllColor ); instanceParameter.SRTMatrix43 = instance.GetGlobalMatrix43(); color color_ll = instValues._color; color color_lr = instValues._color; color color_ul = instValues._color; color color_ur = instValues._color; if( SpriteColor.type == SpriteColorParameter::Default ) { } else if( SpriteColor.type == SpriteColorParameter::Fixed ) { color_ll = color::mul( color_ll, SpriteColor.fixed.ll ); color_lr = color::mul( color_lr, SpriteColor.fixed.lr ); color_ul = color::mul( color_ul, SpriteColor.fixed.ul ); color_ur = color::mul( color_ur, SpriteColor.fixed.ur ); } float fadeAlpha = GetFadeAlpha( instance ); if( fadeAlpha != 1.0f ) { color_ll.a = (uint8_t)(color_ll.a * fadeAlpha); color_lr.a = (uint8_t)(color_lr.a * fadeAlpha); color_ul.a = (uint8_t)(color_ul.a * fadeAlpha); color_ur.a = (uint8_t)(color_ur.a * fadeAlpha); } color_ll.setValueToArg( instanceParameter.Colors[0] ); color_lr.setValueToArg( instanceParameter.Colors[1] ); color_ul.setValueToArg( instanceParameter.Colors[2] ); color_ur.setValueToArg( instanceParameter.Colors[3] ); if( SpritePosition.type == SpritePosition.Default ) { instanceParameter.Positions[0].X = -0.5f; instanceParameter.Positions[0].Y = -0.5f; instanceParameter.Positions[1].X = 0.5f; instanceParameter.Positions[1].Y = -0.5f; instanceParameter.Positions[2].X = -0.5f; instanceParameter.Positions[2].Y = 0.5f; instanceParameter.Positions[3].X = 0.5f; instanceParameter.Positions[3].Y = 0.5f; } else if( SpritePosition.type == SpritePosition.Fixed ) { SpritePosition.fixed.ll.setValueToArg( instanceParameter.Positions[0] ); SpritePosition.fixed.lr.setValueToArg( instanceParameter.Positions[1] ); SpritePosition.fixed.ul.setValueToArg( instanceParameter.Positions[2] ); SpritePosition.fixed.ur.setValueToArg( instanceParameter.Positions[3] ); } instanceParameter.UV = instance.GetUV(); renderer->Rendering( nodeParameter, instanceParameter, m_userData ); } }
//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- void EffectNodeRing::Rendering(const Instance& instance, Manager* manager) { const InstanceValues& instValues = instance.rendererValues.ring; RingRenderer* renderer = manager->GetRingRenderer(); if( renderer != NULL ) { RingRenderer::NodeParameter nodeParameter; nodeParameter.EffectPointer = GetEffect(); nodeParameter.AlphaBlend = AlphaBlend; nodeParameter.TextureFilter = RendererCommon.FilterType; nodeParameter.TextureWrap = RendererCommon.WrapType; nodeParameter.ZTest = RendererCommon.ZTest; nodeParameter.ZWrite = RendererCommon.ZWrite; nodeParameter.Billboard = Billboard; nodeParameter.VertexCount = VertexCount; nodeParameter.ColorTextureIndex = RingTexture; nodeParameter.IsRightHand = manager->GetCoordinateSystem() == CoordinateSystem::RH; nodeParameter.Distortion = RendererCommon.Distortion; nodeParameter.DistortionIntensity = RendererCommon.DistortionIntensity; nodeParameter.DepthOffset = DepthValues.DepthOffset; nodeParameter.IsDepthOffsetScaledWithCamera = DepthValues.IsDepthOffsetScaledWithCamera; nodeParameter.IsDepthOffsetScaledWithParticleScale = DepthValues.IsDepthOffsetScaledWithParticleScale; color _outerColor; color _centerColor; color _innerColor; if (RendererCommon.ColorBindType == BindType::Always || RendererCommon.ColorBindType == BindType::WhenCreating) { _outerColor = color::mul(instValues.outerColor.original, instance.ColorParent); _centerColor = color::mul(instValues.centerColor.original, instance.ColorParent); _innerColor = color::mul(instValues.innerColor.original, instance.ColorParent); } else { _outerColor = instValues.outerColor.original; _centerColor = instValues.centerColor.original; _innerColor = instValues.innerColor.original; } RingRenderer::InstanceParameter instanceParameter; instanceParameter.SRTMatrix43 = instance.GetGlobalMatrix43(); instanceParameter.ViewingAngle = instValues.viewingAngle.current; instValues.outerLocation.current.setValueToArg( instanceParameter.OuterLocation ); instValues.innerLocation.current.setValueToArg( instanceParameter.InnerLocation ); instanceParameter.CenterRatio = instValues.centerRatio.current; _outerColor.setValueToArg( instanceParameter.OuterColor ); _centerColor.setValueToArg( instanceParameter.CenterColor ); _innerColor.setValueToArg( instanceParameter.InnerColor ); // Apply global color if (instance.m_pContainer->GetRootInstance()->IsGlobalColorSet) { Color::Mul(instanceParameter.OuterColor, instanceParameter.OuterColor, instance.m_pContainer->GetRootInstance()->GlobalColor); Color::Mul(instanceParameter.CenterColor, instanceParameter.CenterColor, instance.m_pContainer->GetRootInstance()->GlobalColor); Color::Mul(instanceParameter.InnerColor, instanceParameter.InnerColor, instance.m_pContainer->GetRootInstance()->GlobalColor); } instanceParameter.UV = instance.GetUV(); renderer->Rendering( nodeParameter, instanceParameter, m_userData ); } }