NiRenderedTexture - notes
Сам по себе объект (NiRenderedTexture) может быть свободно внедрен в ниф файлы и даже показать некоторый эффект от своего присутствия.
Но к сожалению, получить полноценный снимок сцены - не удается.
Вероятно по причине не возможности правильно настроить размер текстуры, за что должен отвечать другой элемент движка.
Да и в целом, объект не предназначается для такого, локального, использования.
Возможно, рендер в текстуру следует прописывать в шейдерных инструкциях, которые, также, не работают, в этой версии движка, в желаемом объеме.
За 2021ый год проводилось множество различных тестов, но кроме получения добавленной прозрачности, ничего нового найти не удалось.
Фактически, это некоторого рода баг - поверхность хотя и становится прозрачной, но не получает альфа свойств.
Что хорошо видно по графику сцены (SSG) а также в захваченных из памяти игры моделях.
При этом, все признаки добавления именно альфа свойств на лицо, в т.ч. мерцание полигонов при наложении альфа на альфу.
Примечание.
Можно указать, как свойства объекта!
Т.е. если прописать NiRenderedTexture в качестве niProperties, то можно увидеть их в графике сцены (SSG).
В таком режиме и, если в сцене ниф файла, нет камеры - стабильно добавляет прозрачность назначенному объекту.
Если прописать в один из текстурных слотов - поверхность объекта будет залита белым фоном.
Если в сцене есть камера - результат будет плавающим. Поверхность может становится, как прозрачной, так и терять оную, после перезагрузки ячейки.
Примечание.
Все тесты показывают, что NiRenderedTexture не содержит никаких дополнительных полей.
Т.е. не имеет разделов для своей детальной настройки.
Пространное примечание с картинками.
О том, что все таки бывает, если попытаться внедрить этот элемнет в ниф файл.
Примечание.
Хрчамд писал:
Mr.007
NiRenderedTexture is active?
have we chance to make Camera effects or realtime "reflection" ?
Hrnchamd
You need to write code for that.
Mr.007
with MWSE or MGE shaders using it's will be possible?
Gamebryo documentation have a small example of this code...
Hrnchamd
Not really, because rendering the world is very expensive.
If the render target camera is not near the player there is no guarantee the world is loaded there.
Finally no MGE additions like distant land, sky scatter or per-pixel lighting in render targets.
Same reason games use SSR shaders instead of real reflections.
NullCascade и Greatness7 писали:
30.05.2020
NiRenderedTexture doesn't really do any binary loading. Doesn't make sense to.
It's supposed to be dynamically cregenerated.
Regardless, it does no custom loading and is meant to represent a dynamic, non-loaded canvas.
Greatness7
NiRenderedTexture doesnt override LoadBinary method, so including it in a nif at all isn't going to be useful
in theory it could support having a Renderer/Camera/etc all set up and positioned to automatically work on load. but i doubt it
NullCascade
The load binary entry for the vtable is just a generic NiObjectNET load.
So nothing is handled. We'd have to write our own to support it.
Greatness7
i read the An Example of Updating an NiRenderedTexture page and it sounds fun
well if you had showed any teaser of it working i would def remember ??
iirc the renderer stuff was really confusing because of some major updates they did between versions
but gotta go sleep now already stayed up way too long
Т.е. сделать это, выглядит весьма затруднительным.
Хотя справка к движку сообщает примеры кода.
Т.е. в теории, можно сочинить утилиту, которая будет подхватывать (именную) камеру и сообщать ее изображение в качестве текстуры другому локальному ниф файлу. Либо в приделах одного Ниф файла.
Для локальных помещений это должно (теоретически) сработать.
Но проекция экстерьера в интерьер, вряд ли возможна даже в теории.
Т.к. мир игры существует только вокруг игрока.
Выдержка из оригинальной справки. (NDL Gamebryo 1.1)
NiRenderedTexture represents textures whose contents are generated dynamically by rendering a scene with a renderer. These textures are commonly used for such effects as mirrors, reflections, and closed-circuit television cameras. Note that not all renderers can support these types of textures, and as a result the creation function may return NULL.
NiRenderedTexture objects represent texture images created by rendering a scene. The resulting rendered scene is not drawn directly to the screen, but rather is used as a texture image in the rendering of another scene. As a result, NiRenderedTextures are an inherently dynamic form of texturing, allowing for very advanced effects, such as reflections, dynamic shadows and closed-circuit television cameras.
Mipmapping and Rendered Textures
Currently, no renderers can support mipmapped rendered textures.