Feature request: lock aspect ratio button for materials in "render to texture" mode, to produce 1080p output from what would normally be a square.
I've been converting many many ISFs to materials, to gain better control over the shader speed. When using these materials with surface FX, I need to enable texture mode for the materials to work with those FX.
For projects that output a 1080p format (say, a single non-commercial projector), it's easy to map a 1024x1024 material (or higher-resolution square, in texture mode) to a 16:9 quad. However, this poses a performance problem: the unused edges of the texture-rendered material are *still* introducing load on the GPU.
I discovered this in a big way, in a recent project: I was using a very GPU-heaver material shader, and the material version of the shader (in 1920x1920, with sides cut off via input map to give me 1920x1080) was giving me far lower FPS than the original 1920x1080 ISF. I got around this by throwing a direct-rendered version of the material on a 1080p virtual projector window, and routed that to another quad with syphon/spout -- and voila, things were perfectly matched FPS-wise with the original ISF.
I would love to employ this strategy for everything, but that can produce a mess of syphon/spout routing chains & extra surfaces, and those texture-sharing protocols do take up GPU memory.
So, the idea: add a "lock aspect ratio" button for materials, that will become visible when "Render to Texture" is enabled. The button would enforce a 1:1 aspect ratio no matter what the user-defined "Texture Rez" is, allowing users to produce 1080p content from a material without going through any of those syphon/spout hoops & without burning GPU resources on unused pixels.
I've attached a screenshot and a mockup to this post:
* Screenshot "current_wrong_aspect_ratio.png" shows what it looks like when you try to set "Texture Rez" to 1920x1080 for a shader that should show something perfectly round
* Mockup "desired_lock_aspect_ratio.png" shows an idea for this "lock aspect ratio" button, producing the expected 1080p image while retaining the roundness
I think this would be a big win for the folks who have invested time into migrating content to Madmapper's proprietary material format.
There is an interesting use case for this that would immediately simplify my workflow: using texture-render materials as texture inputs to *other shaders*. Let me walk through an example:
Let's say you have a 1080p video playing on a 16:9 quad, and you want to apply a surface FX that takes a separate texture input, like the "Texture Distort" or "Refractor" from the public FX library. At the moment, there just isn't a clean way to use a textured material (or any material) as that texture input and expect that the aspect ratio will match 1080p -- there is no opportunity to do a proper input mapping here. It's possible to address this by adding an "aspect ratio" control in the FX itself, which I've started doing for the FX I publish, but this just means more effort & other existing FX are not usable as-is.
Thanks for your consideration! I feel like this might be low-hanging fruit that would be very very useful