So this fix do not work

Code: Select all
if(textureUnitParams->mTextureMatrix.get() != NULL)
texCoordContent = Parameter::Content(Parameter::SPC_TEXTURE_COORDINATE0 + textureUnitParams->mTextureUnitState->getTextureCoordSet());
Code: Select all
if (Ogre::RTShader::ShaderGenerator::initialize())
{
// Grab the shader generator pointer.
mShaderGenerator = Ogre::RTShader::ShaderGenerator::getSingletonPtr();
// Add the shader libs resource location.
Ogre::ResourceGroupManager::getSingleton().addResourceLocation(shaderLibPath, "FileSystem");
// Set shader cache path.
mShaderGenerator->setShaderCachePath(shaderCachePath);
// Set the scene manager.
mShaderGenerator->addSceneManager(sceneMgr);
return true;
}
Code: Select all
if (Ogre::RTShader::ShaderGenerator::initialize())
{
// Set shader cache path.
Ogre::RTShader::ShaderGenerator::getSingletonPtr()->setShaderCachePath("c:\\shaders");
// Set the scene manager.
Ogre::RTShader::ShaderGenerator::getSingletonPtr()->addSceneManager(mSceneManager);
// Create shader based technique from the default technique of the given material.
Ogre::RTShader::ShaderGenerator::getSingletonPtr()->createShaderBasedTechnique(MATERIAL_SURFACE, Ogre::MaterialManager::DEFAULT_SCHEME_NAME, Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME);
// Apply the shader generated based techniques.
theViewport->setMaterialScheme(Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME);
}
Code: Select all
Ogre::ResourceGroupManager::getSingleton().addResourceLocation("c:\\shaders", "FileSystem");
Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
Code: Select all
if (!Ogre::RTShader::ShaderGenerator::initialize())
{
return;
}
Code: Select all
if (!Ogre::RTShader::ShaderGenerator::initialize())
{
return;
}
// Set shader cache path.
Ogre::RTShader::ShaderGenerator::getSingletonPtr()->setShaderCachePath("c:\\shaders");
// Set the scene manager ***CRASH AT THIS LINE***
Ogre::RTShader::ShaderGenerator::getSingletonPtr()->addSceneManager(mSceneManager);
// Create shader based technique from the default technique of the given material.
Ogre::RTShader::ShaderGenerator::getSingletonPtr()->createShaderBasedTechnique(MATERIAL_SURFACE, Ogre::MaterialManager::DEFAULT_SCHEME_NAME, Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME);
// Apply the shader generated based techniques.
m_viewport->setMaterialScheme(Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME);
mSceneManager->setShadowTechnique(Ogre::SHADOWTYPE_TEXTURE_MODULATIVE_INTEGRATED);
// 3 textures per directional light
mSceneManager->setShadowTextureCountPerLightType(Ogre::Light::LT_DIRECTIONAL, 3);
mSceneManager->setShadowTextureSettings(512, 3, Ogre::PF_FLOAT32_R);
mSceneManager->setShadowTextureSelfShadow(true);
// Set up caster material - this is just a standard depth/shadow map caster
mSceneManager->setShadowTextureCasterMaterial("PSSM/shadow_caster");
// Disable fog on the caster pass.
Ogre::MaterialPtr passCaterMaterial = Ogre::MaterialManager::getSingleton().getByName("PSSM/shadow_caster");
Ogre::Pass* pssmCasterPass = passCaterMaterial->getTechnique(0)->getPass(0);
pssmCasterPass->setFog(true);
// shadow camera setup
Ogre::PSSMShadowCameraSetup* pssmSetup = new Ogre::PSSMShadowCameraSetup();
pssmSetup->calculateSplitPoints(3, 5, 3000);
pssmSetup->setSplitPadding(10);
pssmSetup->setOptimalAdjustFactor(0, 2);
pssmSetup->setOptimalAdjustFactor(1, 1);
pssmSetup->setOptimalAdjustFactor(2, 0.5);
mSceneManager->setShadowCameraSetup(Ogre::ShadowCameraSetupPtr(pssmSetup));
Ogre::RTShader::SubRenderState* subRenderState = Ogre::RTShader::ShaderGenerator::getSingletonPtr()->createSubRenderState(Ogre::RTShader::IntegratedPSSM3::Type);
Ogre::RTShader::IntegratedPSSM3* pssm3SubRenderState = static_cast<Ogre::RTShader::IntegratedPSSM3*>(subRenderState);
const Ogre::PSSMShadowCameraSetup::SplitPointList& srcSplitPoints = pssmSetup->getSplitPoints();
Ogre::RTShader::IntegratedPSSM3::SplitPointList dstSplitPoints;
for (unsigned int i=0; i < srcSplitPoints.size(); ++i)
{
dstSplitPoints.push_back(srcSplitPoints[i]);
}
pssm3SubRenderState->setSplitPoints(dstSplitPoints);
Ogre::RTShader::ShaderGenerator::getSingletonPtr()->getRenderState(Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME)->addTemplateSubRenderState(subRenderState);
// Invalidate the scheme in order to re-generate all shaders based technique related to this scheme.
Ogre::RTShader::ShaderGenerator::getSingletonPtr()->invalidateScheme(Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME);
Code: Select all
14:26:27: Compiler error: unknown error in materials/RTShaderSystem.material(23): token "rtshader_system" is not recognized
14:26:27: Compiler error: unknown error in materials/RTShaderSystem.material(52): token "rtshader_system" is not recognized
14:26:27: Compiler error: unknown error in materials/RTShaderSystem.material(81): token "rtshader_system" is not recognized
14:26:27: Compiler error: unknown error in materials/RTShaderSystem.material(110): token "rtshader_system" is not recognized
14:26:27: Compiler error: unknown error in materials/RTShaderSystem.material(146): token "rtshader_system" is not recognized
14:26:27: Compiler error: unknown error in materials/RTShaderSystem.material(81): token "rtshader_system" is not recognized
14:26:27: Compiler error: unknown error in materials/RTShaderSystem.material(162): token "rtshader_system" is not recognized
14:26:27: Compiler error: unknown error in materials/RTShaderSystem.material(81): token "rtshader_system" is not recognized
14:26:27: Compiler error: unknown error in materials/RTShaderSystem.material(110): token "rtshader_system" is not recognized
Code: Select all
// declare the vertex shader (CG for the language)
vertex_program PSSM/shadow_caster_vs cg
{
// source file
source pssm.cg
// will run on vertex shader 1.1+
profiles vs_1_1 arbvp1
// entry function
entry_point shadow_caster_vs
default_params
{
param_named_auto wvpMat worldviewproj_matrix
// this is the scene's depth range
//param_named_auto depthRange scene_depth_range
//param_named_auto optimalAdustFactor custom 0
}
}
// declare the fragment shader (CG for the language)
fragment_program PSSM/shadow_caster_ps cg
{
// source file
source pssm.cg
// will run on pixel shader 2.0+
profiles ps_2_0 arbfp1
// entry function
entry_point shadow_caster_ps
default_params
{
}
}
material PSSM/shadow_caster
{
technique
{
// all this will do is write depth and depth² to red and green
pass
{
vertex_program_ref PSSM/shadow_caster_vs
{
}
fragment_program_ref PSSM/shadow_caster_ps
{
}
}
}
}
vertex_program PSSM/shadow_receiver_vs cg
{
source pssm.cg
profiles vs_1_1 arbvp1
entry_point shadow_receiver_vs
default_params
{
param_named_auto lightPosition light_position_object_space 0
param_named_auto eyePosition camera_position_object_space
param_named_auto worldViewProjMatrix worldviewproj_matrix
param_named_auto texWorldViewProjMatrix0 texture_worldviewproj_matrix 0
param_named_auto texWorldViewProjMatrix1 texture_worldviewproj_matrix 1
param_named_auto texWorldViewProjMatrix2 texture_worldviewproj_matrix 2
//param_named_auto depthRange0 shadow_scene_depth_range 0
//param_named_auto depthRange1 shadow_scene_depth_range 1
//param_named_auto depthRange2 shadow_scene_depth_range 2
}
}
fragment_program PSSM/shadow_receiver_ps cg
{
source pssm.cg
profiles ps_2_x arbfp1
entry_point shadow_receiver_ps
default_params
{
param_named_auto lightDiffuse derived_light_diffuse_colour 0
param_named_auto lightSpecular derived_light_specular_colour 0
param_named_auto ambient derived_ambient_light_colour
param_named_auto invShadowMapSize0 inverse_texture_size 0
param_named_auto invShadowMapSize1 inverse_texture_size 1
param_named_auto invShadowMapSize2 inverse_texture_size 2
//param_named pssmSplitPoints MANUAL
}
}
abstract material PSSM/base_receiver
{
technique
{
pass
{
ambient 1 1 1 1
diffuse 1 1 1 1
vertex_program_ref PSSM/shadow_receiver_vs {}
fragment_program_ref PSSM/shadow_receiver_ps {}
texture_unit shadow_tex0
{
content_type shadow
tex_address_mode clamp
}
texture_unit shadow_tex1
{
content_type shadow
tex_address_mode clamp
}
texture_unit shadow_tex2
{
content_type shadow
tex_address_mode clamp
}
texture_unit diffuse_tex
{
texture $diffuse
}
}
}
}
material PSSM/Plane : PSSM/base_receiver
{
set $diffuse BumpyMetal.jpg
}
material PSSM/Knot : PSSM/base_receiver
{
set $diffuse MtlPlat2.jpg
}