Ogre3d / Проблема с композитором

Я убил весь свой день, пытаясь понять, почему код ниже не работает:

У меня есть этот скрипт .compositor:

compositor BW
{
technique
{
texture rt0 target_width target_height PF_A8R8G8B8

target rt0
{
input previous
}

target_output
{
input none

pass render_quad
{
material BlackAndWhite
input 0 scene
}
}
}
}

.материал сценария:

vertex_program BW_VP cg
{
source MyShader.cg
entry_point BW_VP
profiles vs_4_0 vs_2_0 vs_1_1 arbvp1

default_params
{
param_named_auto worldViewProj worldviewproj_matrix
}
}

fragment_program BW_FP cg
{
source MyShader.cg
entry_point BW_FP
profiles ps_4_0 ps_2_0 arbfp1
}

material BlackAndWhite
{
technique
{
vertex_program_ref BW_VP{}
fragment_program_ref BW_FP{}

texture_unit
{
texture rt0
tex_coord_set 0
tex_address_mode clamp
filtering none
}
}
}

и программа .cg:

sampler2D RT : register(s0);

void BW_VP(in float4 inPos : POSITION, out float4 pos : POSITION, out float2 uv0 : TEXCOORD0, uniform float4x4 worldViewProj)
{
pos = mul(worldViewProj, inPos);
inPos.xy = sign(inPos.xy);
uv0 = (float2(inPos.x, -inPos.y) + 1.0f) * 0.5f;
}

float4 BW_FP(float4 pos : POSITION, float2 iTexCoord : TEXCOORD0) : COLOR
{
float3 greyscale = dot(tex2D(RT, iTexCoord).rgb, float3(0.3, 0.59, 0.11));
return float4(greyscale, 1.0);
}

Я использую утверждения ниже для инициализации композитора:

Ogre::CompositorManager::getSingleton().addCompositor(mViewport, "BW");
Ogre::CompositorManager::getSingleton().setCompositorEnabled(mViewport, "BW", true);

И я не вижу результатов вообще. В моей сцене есть пара источников света и cg-шейдеры — они работают отлично. Кроме того, все ресурсы загружены правильно, и группа ресурсов видит все необходимые файлы, однако я получаю это исключение в файле журнала:

OGRE EXCEPTION(6:FileNotFoundException): Cannot locate resource rt0 in resource group Mission 1 : Deliver Tom or any other group. in ResourceGroupManager::openResource at D:\ARCHIVES\DEPENDENCIES\OGRE_REPOSITORY\OgreMain\src\OgreResourceGroupManager.cpp (line 756)

AFAIK rt0 не должен быть ресурсом из-за его автоматической генерации «в полете» от ogre. Я что-то пропустил?

Любая помощь приветствуется! Спасибо!

0

Решение

Ошибка исключения правильный: у вас нет ресурса текстурного файла с таким именем, однако OGRE создаст для вас пустую текстуру.

Однако я вижу две проблемы:

  1. В файле композитора что сцена? Вместо сцена ты должен использовать RT0, это цель рендеринга, где ваша сцена визуализируется и куда вы идете, чтобы применить материал.
  2. Отсутствие проходить Заявление в материале сценария.
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector