✨ Feature Requests

  • Search existing ideas before submitting- Use support.secondlife.com for customer support issues- Keep posts on-topicThank you for your ideas!
Performant and quality 2D text drawing routines
Note: This issue was previously accepted on the JIRA as BUG-231731 in 2022. Resubmitting it to the Canny because I think the idea has been lost in the move. The feature requested is a high performing set of functions that can draw text onto prim surfaces. With multi-line support via \n, measured font sizes, batched draws, and baked font styles compiled into the viewer engine. Restrict this feature to face 0 of the LINK_ROOT prim in an object. A maximum arbitrary number of "screens" could be allowed per region. The maximum limit of llInitDrawString calls per region could be set to for example 256. Attachments would not contribute towards this limit. Styles baked into the viewer originating from ttf: integer FONT_STYLE_DEFAULT = 0; // e.g. arial integer FONT_STYLE_ARIAL = 0; integer FONT_STYLE_CANDYSCRIPT = 1; integer FONT_STYLE_SHELLEYALLEGRO = 2; integer FONT_STYLE_BAUB = 3; LSL prototypes: llInitDrawString(integer fontstyle) Initializes the text context. If this is called again with the same style it should silently return. If called with a different style then change the style. In C++ call initialize the opengltext to delete the previous glyphInfo. If the GLSL program is already linked it is reused. parameters: fontstyle: Uses an integer of FONT_* constants that reference baked fonts llBeginDrawString() Begins drawing. float llMeasureString(string text) Measures the size of the string. parameters: text: The text to draw return value: The measured size. llDrawString(x, y, text, color) Draws the string at the position and color. parameters: x: x position y: y position text: the text string color: the color llEndDrawString() Swaps the buffer onto the face of the prim. Note: llBeginDrawString just sets an integer in the C++ code to 0. Example SL script: drawMyStrings() { vector pos1 = <0, 0, 0>; vector pos2 = <0, 30, 0>; vector pos3 = <0, 60, 0>; vector color1 = <1,0,0>; vector color2 = <1,1,0>; vector color3 = <0,1,0>; string text1 = "Hello World!"; string text2 = "It worked."; string text3 = "This is a\nmultiline string."; vector sz1 = llMeasureString(text1); vector sz2 = llMeasureString(text2); vector sz3 = llMeasureString(text3); llBeginDrawString(); // This draws "Hello World!" on the first line. llDrawString(pos1.x - sz1.x * 0.5, pos1.y - sz1.y, text1, color1); // This draws "It worked." on the next line. llDrawString(pos2.x - sz2.x * 0.5, pos2.y - sz2.y, text2, color2); // This draws "This is a" on the third line and "multiline string." on the fourth. llDrawString(pos3.x - sz3.x * 0.5, pos3.y - sz3.y, text3, color3); llEndDrawString(); } default { state_entry() { llInitDrawString(FONT_STYLE_DEFAULT); drawMyStrings(); } } The OpenGL C++ implementation to place in the viewer code to support this functionality is on github. A patch exists for gltext to for baking. In the viewer these can be looked up with FONT_* constants. The init of the ogl context per font for the text should be instanced once per object using llInitDrawString to be used for multiple scripts and prims without reinitialization. This is destroyed when the viewer releases the object. https://github.com/tlorach/OpenGLText There is a bakeFonts.exe for turning ttf fonts into texture atlases to ship with the viewer to bake the fonts and can be produced as .bin and .tga files with offset info. Or, baked into font_xx.h and font_xx_bitmap.h files that can be compiled. This solution does not require the freetype library.
6
·

tracked

Mesh with physics, fluttering clothes, hair, and accessories
Now the mesh in sl has no physics at all, you wear stiff clothes, with stiff hair, as you walk, the fabric stretches against your body into strange shapes, when you sit down, your long hair will bend 90 degrees to fit your legs. everything is very stiff. When i see those long flowing hair and those fluttering gorgeous skirts, i miss the good old days. Even though they look messy sometimes, but that's intuitive. But the prims is behind the times, everything is in mesh now. Why not give mesh physics too! Mesh greatly improves the quality of props in sl, but it loses the most intuitive physics, they just look good, but once they move, they will reveal their flaws. This is just like how people used to paint gloss on textures, only viewable from the front, otherwise it will be a mess. Now we have the advanced lighting, PBR, make objects looks more and more real, there's one step left, that is mesh physics! Imagine a cute girl with long flowing golden hair, wearing a flowing dress, dancing gracefully, her hair and clothes fluttering with dance, how beautiful! You must watched MMD dances! fluttering, inertia, collision, make MMD dances lifelike! SL need mesh physics, we can dance in sl like MMD! Many similar games already have these physics effects, but sl has not yet, please! If we have mesh physics, how to deal with rigged object is a problem. Could we make old items physics-enabled with edit? Or only the authors can handle it to release a update? What tools could authors use? There's really many problems.
10
·

tracked

Re: HDRI Preview feature and future wishes
I just tried the HDRI Preview feature. I did love the effect it had on the environment light, but using the HDRI I tried with (the one initially recommended by you at LL for PBR work) did cause a field to be drawn on the sky dome, which looks really funny and out of place... screenshot attached with a view from an unenclosed skybox. In my case, a simple sky-and-maybe-clouds texture there would probably be better. I'd love to see this feature evolve to where one is able to upload an EXR or HDR file and apply it to the environment. I'd also love to see the feature evolve such that... The light from the HDRI is kept but the rendering of the image on the dome can be disabled. This effect is possible to set in both Blender and Substance Painter for example, also an option to blur it. In conjunction with the above feature, combining the use of an HDRI and the animated cloud texture we already have today, and the clouds should of course cast shadows! This would be great especially when you have very small or no clouds in the HDRI texture when you choose to keep it rendered. I'd love to be able to have one HDRI above, and another one under sea surface. Combining this with the previous mentioned features could allow for really cool effects under water! The ability to set one HDRI for environment light, and a separate HDRI for "texturing" the dome. Setting this texture to a built-in Transparent texture (or a new one like that for HDRI) could be the mechanism to cause the first-mentioned feature of hiding the image of the HDRI on the dome, only keeping its light. Without the above few features, I wonder if this feature would end up only really being good when you're taking photos. Hope this makes some sort of sense... Thank you! =)
1
·

tracked

Load More