#include "viewRenderOverridePostColor.h"
#include <maya/MShaderManager.h>
const MString ColorPostProcessOverride::kSwirlPassName =
"ColorPostProcessOverride_Swirl";
const MString ColorPostProcessOverride::kFishEyePassName =
"ColorPostProcessOverride_FishEye";
const MString ColorPostProcessOverride::kEdgeDetectPassName =
"ColorPostProcessOverride_EdgeDetect";
ColorPostProcessOverride::ColorPostProcessOverride(
const MString & name )
: MRenderOverride( name )
, mUIName("Color Post")
{
if (!theRenderer)
return;
PostQuadRender* swirlOp = new PostQuadRender( kSwirlPassName, "FilterSwirl", "" );
PostQuadRender* fishEyeOp = new PostQuadRender( kFishEyePassName, "FilterFishEye", "" );
PostQuadRender* edgeDetectOp = new PostQuadRender( kEdgeDetectPassName, "FilterEdgeDetect", "" );
swirlOp->setEnabled(false);
mOperations.insertAfter(MHWRender::MRenderOperation::kStandardSceneName, swirlOp);
mOperations.insertAfter(kSwirlPassName, fishEyeOp);
mOperations.insertAfter(kFishEyePassName, edgeDetectOp);
}
ColorPostProcessOverride::~ColorPostProcessOverride()
{
}
{
}
MStatus ColorPostProcessOverride::setup(
const MString & destination )
{
return MRenderOverride::setup(destination);
}
MStatus ColorPostProcessOverride::cleanup()
{
return MRenderOverride::cleanup();
}
: MQuadRender( name )
, mShaderInstance(NULL)
, mEffectId(id)
, mEffectIdTechnique(technique)
{
mInputTargetNames.clear();
mInputTargetNames.append(kAuxiliaryTargetName);
mInputTargetNames.append(kAuxiliaryDepthTargetName);
mInputTargetNames.append(kColorTargetName);
mInputTargetNames.append(kDepthTargetName);
mOutputTargetNames.clear();
mOutputTargetNames.append(kColorTargetName);
mOutputTargetNames.append(kDepthTargetName);
mOutputTargetNames.append(kAuxiliaryTargetName);
mOutputTargetNames.append(kAuxiliaryDepthTargetName);
}
PostQuadRender::~PostQuadRender()
{
if (mShaderInstance)
{
if (renderer)
{
if (shaderMgr)
{
}
}
mShaderInstance = NULL;
}
}
PostQuadRender::shader()
{
if (mShaderInstance == NULL)
{
if (renderer)
{
if (shaderMgr)
{
mShaderInstance = shaderMgr->
getEffectsFileShader( mEffectId.asChar(), mEffectIdTechnique.asChar() );
}
}
}
if (mShaderInstance)
{
assignment.
target = getInputTarget(kColorTargetName);
MStatus status = mShaderInstance->setParameter(
"gInputTex", assignment);
{
printf("Could not set input render target / texture parameter on post 2d shader\n");
return NULL;
}
const MString edgeDetect(
"FilterEdgeDetect");
if (mEffectId == edgeDetect)
{
status = mShaderInstance->setParameter("gThickness", 0.5f );
{
printf("Could not set thickness parameter on edge detect shader\n");
}
status = mShaderInstance->setParameter("gThreshold", 0.1f );
{
printf("Could not set threshold parameter on edge detect shader\n");
}
}
}
return mShaderInstance;
}
{
if (name == kColorTargetName)
{
if (outTarget)
description.
setName(
"_post_target_1");
return true;
}
else if (name == kDepthTargetName)
{
if (outTarget)
description.
setName(
"_post_target_depth");
return true;
}
return false;
}
int PostQuadRender::writableTargets(unsigned int& count)
{
count = 2;
return 0;
}
PostQuadRender::clearOperation()
{
return mClearOperation;
}