# 14 engine improvements from June/July -- window sizing docs, TCastleAbstractPrimitive and TCastleImageTransform extensions, cubemaps and 3D textures in all texture slots, VS Code integration improved, rendering optimizations

**URL:** https://forum.castle-engine.io/t/14-engine-improvements-from-june-july-window-sizing-docs-tcastleabstractprimitive-and-tcastleimagetransform-extensions-cubemaps-and-3d-textures-in-all-texture-slots-vs-code-integration-improved-rendering-optimizations/1982
**Category:** News
**Created:** [July 29, 2025, 4:31pm UTC](https://forum.castle-engine.io/t/14-engine-improvements-from-june-july-window-sizing-docs-tcastleabstractprimitive-and-tcastleimagetransform-extensions-cubemaps-and-3d-textures-in-all-texture-slots-vs-code-integration-improved-rendering-optimizations/1982 "2025-07-29T16:31:29Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![michalis](https://forum.castle-engine.io/user_avatar/forum.castle-engine.io/michalis/32/3_2.png) [@michalis](https://forum.castle-engine.io/u/michalis)
#### Post date: [July 29, 2025, 4:31pm UTC](https://forum.castle-engine.io/t/14-engine-improvements-from-june-july-window-sizing-docs-tcastleabstractprimitive-and-tcastleimagetransform-extensions-cubemaps-and-3d-textures-in-all-texture-slots-vs-code-integration-improved-rendering-optimizations/1982/1 "2025-07-29T16:31:29Z")

</div>

| [![Window with castle model](https://forum.castle-engine.io/uploads/default/original/2X/4/472f30835a4966a8a83c07d93e59a1a4aeac0ced.png)](https://castle-engine.io/wp/wp-content/uploads/2025/07/window_size.png "Window with castle model") |
| [![Cubes test](https://forum.castle-engine.io/uploads/default/original/2X/9/92b18d7e6e64282dea8c8d7fc4b0b8a97d6a92a8.png)](https://castle-engine.io/wp/wp-content/uploads/2025/07/many_cubes.png "Cubes test") |
| [![Cubes test](https://forum.castle-engine.io/uploads/default/original/2X/c/c2262050fd4fa7f4f65e731c586b44ee7f15f8a6.jpeg)](https://castle-engine.io/wp/wp-content/uploads/2025/07/many_cubes_2.jpeg "Cubes test") |

Presenting a big batch of engine improvements done last ~month. Lots of small things. Everyone, pick what you like 🙂 Upgrade to the [latest engine version](https://castle-engine.io/download) and enjoy them all!

If you like what you see, we appreciate your support on [Patreon](https://www.patreon.com/c/castleengine) (we also have [other ways to donate](https://castle-engine.io/donate)).

1. We added a new documentation page [Window size and fullscreen](https://castle-engine.io/window_size). Nicely explains how to change window size, fullscreen mode, anti-aliasing, and even (not recommended, we explain why) the OS-wide screen resolution.

This is also linked from the new projects’ `gameinitialize.pas` template code. Previous template placed there a long comment — now it’s just a short concise comment with a link to the above page.

2. Added `TCastleAbstractPrimitive.TextureScale` property, useful to easily scale the texture (in descendants like `TCastlePlane`, `TCastleBox`).

3. `TCastleImageTransform` has new properties to make it lit and configure other options: `TCastleImageTransform.Material`, `TCastleImageTransform.UrlNormalMap`, `TCastleImageTransform.RenderOptions`. Details:

4. We have enabled using cubemaps and 3D textures (nodes like `TImageTexture3D`, `ImageCubeMapTexture`) to be used in any material “texture slot”. For example, they can be used to define a `TPhysicalMaterialNode.EmissiveTexture`, `TMaterialNode.SpecularTexture` and more now.

5. We allow customizing the [`proposed_unit_prefix` in project settings](https://castle-engine.io/project_manifest). This makes sense if you don’t want your unit names to start with `Game` (e.g. because you’re not making a game).

6. We have improved [physics](https://castle-engine.io/physics) interaction with `TCastleTransformReference`. We warn when collider / bodies are inside. We calculate bounding box properly when collider is at `TCastleTransformReference`.

7. Our `pasls` (used for the code completion by our [VS Code extension](https://castle-engine.io/vscode)) has been improved:

8. I spend some time with [Valgrind](https://castle-engine.io/profiling_using_valgrind) optimizing a few engine low-level operations. This was fruitful. Per-frame work (rendering) is in one testcase now 0.579 fraction of the old one (so it’s almost ~2x faster).

For this work, I used the “many cubes” testcase on [GitHub – michaliskambi/many-cubes](https://github.com/michaliskambi/many-cubes/) which followed from the [“Drawing Many Cubes Faster” forum thread](https://forum.castle-engine.io/t/drawing-many-cubes-faster/1968/21).

The gains do not translate to all possible applications that easily, so don’t expect a 2x FPS increase in your applications now… but maybe you will notice some speedup 🙂 So give new engine a try, let us know (e.g. in the forum thread) about your tests and speed. You’re also welcome to provide us “testcases to optimize” (though try to keep them real-life, not contrived :). This helps, when I can just run profiler on some something concrete, and advise what to adjust (in your code and/or in the engine).

9. Moving / resizing window (`TCastleWindow`) on WinAPI is now fixed to be smooth.

10. We have internally a nice WinAPI messages debugging feature. Compile with `CASTLE_DEBUG_WINAPI_MESSAGES` symbol defined.

11. We had to bump requirements of our _Raspberry Pi 32-bit (Arm)_ builds. They require now _Bookworm_ OS version. This matches now builds on all other systems (Linux on regular x86\_64, and _Raspberry Pi 64-bit (Aarch64)_).

12. We expose now `TX3DNode.WaitForRelease` and `NodeRelease`, simpler and with more obvious names alternatives to `TX3DNode.KeepExistingBegin`, `TX3DNode.KeepExistingEnd`, `FreeIfUnusedAndNil`.

13. Fixes to [castle-editor-portable](https://github.com/castle-engine/castle-engine/tree/master/tools/castle-editor-portable) editing 2D game template with Spine, and more general: `DataDirectoryInformation` and `ApplicationDataOverride` interaction fixed.

14. To improve the comfort of cloning from GIT the engine, we now limit our paths to 130 (previously, our longest path reached 165). This decreases changes you will run into trouble on Windows, with Windows long paths or GIT on Windows long paths disabled.

---

<div class="post-metadata">

### Author: ![michalis](https://forum.castle-engine.io/user_avatar/forum.castle-engine.io/michalis/32/3_2.png) [@michalis](https://forum.castle-engine.io/u/michalis)
#### Post date: [July 29, 2025, 4:37pm UTC](https://forum.castle-engine.io/t/14-engine-improvements-from-june-july-window-sizing-docs-tcastleabstractprimitive-and-tcastleimagetransform-extensions-cubemaps-and-3d-textures-in-all-texture-slots-vs-code-integration-improved-rendering-optimizations/1982/2 "2025-07-29T16:37:22Z")

</div>


