//---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- 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 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 ); } }