FIXED: RTSS is broken (TRUNK 11/03/2011)

Problems building or running the engine, queries about how to use features etc.
User avatar
Wolfmanfx
OGRE Team Member
OGRE Team Member
Posts: 1525
Joined: Fri Feb 03, 2006 10:37 pm
Location: Austria - Leoben
x 100

FIXED: RTSS is broken (TRUNK 11/03/2011)

Post by Wolfmanfx »

Code: Select all

---------------------------
An exception has occurred!
---------------------------
OGRE EXCEPTION(2:InvalidParametersException): Could not create gpu programs from render state  in ProgramManager::acquireGpuPrograms at ..\..\..\Components\RTShaderSystem\src\OgreShaderProgramManager.cpp (line 112)
---------------------------
OK   
---------------------------
Seems that something is broken in trunk (did a clean recompile) when i try to run the RTSS sample in the sample browser. The exception is thrown when the RTSS/LayeredBlending material is processed (i also get an exception in my own program).
Thats the generated shader:

Code: Select all

//-----------------------------------------------------------------------------
// Program Type: Vertex shader
// Language: hlsl
// Created by Ogre RT Shader Generator. All rights reserved.
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//                         PROGRAM DEPENDENCIES
//-----------------------------------------------------------------------------
#include "FFPLib_Transform.hlsl"
#include "FFPLib_Common.hlsl"
#include "FFPLib_Texturing.hlsl"

//-----------------------------------------------------------------------------
//                         GLOBAL PARAMETERS
//-----------------------------------------------------------------------------

float4x4	worldviewproj_matrix;
float3	lod_camera_position;

//-----------------------------------------------------------------------------
// Function Name: main
// Function Desc: Vertex Program Entry point
//-----------------------------------------------------------------------------
void main
	(
	 in float4	iPos_0 : POSITION, 
	 in float2	iTexcoord2_0 : TEXCOORD0, 
	 out float4	oPos_0 : POSITION, 
	 out float2	oTexcoord2_0 : TEXCOORD0, 
	 out float2	oTexcoord2_1 : TEXCOORD1
	)
{
	float4	lLocalParam_0;
	float4	lLocalParam_1;

	FFP_Transform(worldviewproj_matrix, iPos_0, oPos_0);

	FFP_Construct(1.0, 1.0, 1.0, 1.0, lLocalParam_0);

	FFP_Construct(0.0, 0.0, 0.0, 0.0, lLocalParam_1);

	FFP_TransformTexCoord(lod_camera_position, iTexcoord2_0, oTexcoord2_0);

	FFP_Assign(iTexcoord2_0, oTexcoord2_1);
}
And here the compile error in OgreD3D9HLSLProgram.cpp

Code: Select all

Cannot assemble D3D9 high-level shader 3966944195_VS Errors:
D:\ogre\Build\bin\Debug\memory(43,2): error X3017: 'FFP_TransformTexCoord': cannot implicitly convert from 'const float3' to 'column_major float4x4'
I dont know why he uses here the lod_camera_position instead of the texture matrix.

Edit:

Here the fix:

Code: Select all

diff --git a/Components/RTShaderSystem/src/OgreShaderParameter.cpp b/Components/RTShaderSystem/src/OgreShaderParameter.cpp
--- a/Components/RTShaderSystem/src/OgreShaderParameter.cpp
+++ b/Components/RTShaderSystem/src/OgreShaderParameter.cpp
@@ -281,6 +281,7 @@
 		AutoShaderParameter(GpuProgramParameters::ACT_TEXTURE_WORLDVIEWPROJ_MATRIX,  			"texture_worldviewproj_matrix",				GCT_MATRIX_4X4),
 		AutoShaderParameter(GpuProgramParameters::ACT_TEXTURE_WORLDVIEWPROJ_MATRIX_ARRAY,		"texture_worldviewproj_matrix_array",		GCT_MATRIX_4X4),
 		AutoShaderParameter(GpuProgramParameters::ACT_SPOTLIGHT_VIEWPROJ_MATRIX,				"spotlight_viewproj_matrix",				GCT_MATRIX_4X4),
+		AutoShaderParameter(GpuProgramParameters::ACT_SPOTLIGHT_VIEWPROJ_MATRIX_ARRAY,			"spotlight_viewproj_matrix_array",		GCT_MATRIX_4X4),		
 		AutoShaderParameter(GpuProgramParameters::ACT_SPOTLIGHT_WORLDVIEWPROJ_MATRIX,			"spotlight_worldviewproj_matrix",					GCT_MATRIX_4X4),
 		AutoShaderParameter(GpuProgramParameters::ACT_CUSTOM,									"custom",											GCT_FLOAT4),  // *** needs to be tested
 		AutoShaderParameter(GpuProgramParameters::ACT_TIME,										"time",											GCT_FLOAT1),
@@ -325,6 +326,7 @@
 		AutoShaderParameter(GpuProgramParameters::ACT_TEXTURE_MATRIX,							 "texture_matrix",					GCT_MATRIX_4X4),
 		AutoShaderParameter(GpuProgramParameters::ACT_LOD_CAMERA_POSITION,					"lod_camera_position",              GCT_FLOAT3),
 		AutoShaderParameter(GpuProgramParameters::ACT_LOD_CAMERA_POSITION_OBJECT_SPACE,		"lod_camera_position_object_space", GCT_FLOAT3),
+		AutoShaderParameter(GpuProgramParameters::ACT_LIGHT_CUSTOM,							"light_custom",GCT_FLOAT1)
 	};
 
 //-----------------------------------------------------------------------
Last edited by Wolfmanfx on Fri Mar 11, 2011 6:47 pm, edited 1 time in total.
User avatar
masterfalcon
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 4270
Joined: Sun Feb 25, 2007 4:56 am
Location: Bloomington, MN
x 126

Re: RTSS is broken (TRUNK 11/03/2011)

Post by masterfalcon »

Ok, that happens in other languages too? I thought it was just GLSL ES. I see the exact same issue, same function, parameter type change, etc. I spent all of yesterday debugging and going through changelists trying to figure out where it could have occurred with no luck.
User avatar
Wolfmanfx
OGRE Team Member
OGRE Team Member
Posts: 1525
Joined: Fri Feb 03, 2006 10:37 pm
Location: Austria - Leoben
x 100

Re: RTSS is broken (TRUNK 11/03/2011)

Post by Wolfmanfx »

OgreGpuProgramParams.h
--> AutoConstantType
and
OgreShaderParameter.cpp (RTSchaderSystem project)
--> AutoShaderParameter

are out of sync (at least i think) i have to digg deeper
User avatar
Wolfmanfx
OGRE Team Member
OGRE Team Member
Posts: 1525
Joined: Fri Feb 03, 2006 10:37 pm
Location: Austria - Leoben
x 100

Re: RTSS is broken (TRUNK 11/03/2011)

Post by Wolfmanfx »

In OgreShaderParameter.cpp
line 425 the error happens.
User avatar
Wolfmanfx
OGRE Team Member
OGRE Team Member
Posts: 1525
Joined: Fri Feb 03, 2006 10:37 pm
Location: Austria - Leoben
x 100

Re: RTSS is broken (TRUNK 11/03/2011)

Post by Wolfmanfx »

ok steve inserted ACT_SPOTLIGHT_VIEWPROJ_MATRIX_ARRAY in Changeset 2656 (e88ed30bb85c) Added support for spotlight_viewproj_matrix_array GPU parameter
:)
User avatar
masterfalcon
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 4270
Joined: Sun Feb 25, 2007 4:56 am
Location: Bloomington, MN
x 126

Re: FIXED: RTSS is broken (TRUNK 11/03/2011)

Post by masterfalcon »

Ok, is that the problem or just keeping notes?
User avatar
Wolfmanfx
OGRE Team Member
OGRE Team Member
Posts: 1525
Joined: Fri Feb 03, 2006 10:37 pm
Location: Austria - Leoben
x 100

Re: FIXED: RTSS is broken (TRUNK 11/03/2011)

Post by Wolfmanfx »

I fixed it look at the first post its working now
User avatar
masterfalcon
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 4270
Joined: Sun Feb 25, 2007 4:56 am
Location: Bloomington, MN
x 126

Re: FIXED: RTSS is broken (TRUNK 11/03/2011)

Post by masterfalcon »

Thanks so much Wolfman! This has been plaguing me for a while!
User avatar
Wolfmanfx
OGRE Team Member
OGRE Team Member
Posts: 1525
Joined: Fri Feb 03, 2006 10:37 pm
Location: Austria - Leoben
x 100

Re: FIXED: RTSS is broken (TRUNK 11/03/2011)

Post by Wolfmanfx »

np :)
ronkub
Gnoblar
Posts: 1
Joined: Mon Jan 24, 2011 1:02 pm

Re: FIXED: RTSS is broken (TRUNK 11/03/2011)

Post by ronkub »

Moin,

Problem is still there using Ogre 1.7.3. The patch works fine.

Thanks.

ronkub
van4dium
Halfling
Posts: 40
Joined: Fri Jul 30, 2010 2:40 am
x 1

Re: FIXED: RTSS is broken (TRUNK 11/03/2011)

Post by van4dium »

problem still exist in ogre 1.7.4.

first post fix the problem.

tnx Wolfmanfx.
jj
Halfling
Posts: 50
Joined: Thu Apr 03, 2008 1:33 am

Re: FIXED: RTSS is broken (TRUNK 11/03/2011)

Post by jj »

Hi!

I think I'm hitting this same issue and trying to fix it (in 1.7.4). Do I need to fix the code (with first post fix) and rebuild Ogre (plus other libs that depend on Ogre, like CEGUI)? or just rebuilding the RTShader component and replacing dlls and libs could be enough?

trying this second path, which I hoped it worked but no luck yet (and rebuilding all our libs that depend on ogre is really slow and we are closing a release...

[EDIT] Just confirming that CEGUI needed to be rebuilt as well, but this fix is a lifesaver, thanks so much Wolfmanfx!

any help would be really appreciated!

thansk
jj