Ikaroon / TMP3D

A small extension that makes 3D text with Unity's TextMeshPro possible. It uses raymarching and a geometry shader to work around the limitations of TMP at the moment

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TMP3D Logo

GitHub (Pre-)Release Date

Text Mesh Pro 3D

This is a small extension that makes 3D text with Unity's TextMeshPro possible. It uses raymarching and a geometry shader to work around the limitations of TMP at the moment.

Features

  • Solid, unlit shader (3D)
  • 3D character properties and animation
  • Outline support
  • Bold text support
  • Italic text support
  • Debug rendering
    • Steps: Showing shader complexity
    • Mask: 3D uvs
  • Text Creation Helper
  • Multiple Raymarching Algorithms
    • Simple: Equal sized steps
    • Temporal: Optimized for Temporal Antialiasing
    • SDF: Using TextMeshPro's distance values
  • Strikethrough text support
  • Underline text support
  • Face texture support
  • Documentation
  • Solid, surface shader
  • Solid, unlit shader (UI)
  • Sprite support

In Evaluation

  • Bevelled text1
  • Full fledged freeform text using textures1
  • Translucent, unlit shader
  • VR optimizations2

Compatibility

Graphics API Built-in HDRP URP
DirectX 11 ✔️ Compatible ✔️ Compatible ✔️ Compatible
DirectX 12 ✔️ Compatible ✔️ Compatible ✔️ Compatible
Vulkan ✔️ Compatible ✔️ Compatible ✔️ Compatible
OpenGL Core ✔️ Compatible ⚠️ Invalid ✔️ Compatible
OpenGLES23 ❌ Incompatible ⚠️ Invalid ❌ Incompatible
OpenGLES3 ✔️ Compatible ⚠️ Invalid ✔️ Compatible
Metal4 〰️ To Be Tested 〰️ To Be Tested 〰️ To Be Tested

If the shader doesn't work for a compatible combination try to reimport the shader file first! When the issue persists contact me!

Installation

PackageInstallation

  1. Open the package manager in Unity from Window>Package Manager
  2. Select the + dropdown button in the top-left corner of the package manager
  3. Select Add package from git URL...
  4. Enter https://github.com/Ikaroon/TMP3D.git as url and confirm

This method will always install the current state of the git. To get a released version head to the release page!

How to use

To understand how to setup a TextMeshPro for 3D you can check out the sample in the package. For downloading that follow these steps:

  1. Open the package manager in Unity from Window>Package Manager
  2. Select Text Mesh Pro 3D Support in the section Ikaroon
  3. Expand Samples
  4. Click Import next to Solid Text
  5. Now open the scene from Assets/Samples/Text Mesh Pro 3D Support/<version>/Solid Text/Scenes/Sample_TMP3D

If you still need help, here are some steps how you setup a TextMeshPro for 3D. There are two ways of creating a TextMeshPro 3D.

The Automatic way:

  1. Create a TextMeshPro in a scene from 3D Object>Text - TextMeshPro (3D)
  2. Replace the FontAsset with another font
  3. Click Create 3D Font Asset Variant if it's not a 3D font already (The button will be disabled otherwise)
  4. You have now access to 3D text!

The Manual way:

  1. Create a new FontAsset by using the Font Asset Creator from Window>Text Mesh Pro>Font Asset Creator
  2. Expand the created Asset and select the Material
  3. Change the Material's shader to TextMeshPro/3D/Unlit
  4. Create a TextMeshPro in a scene from 3D Object>Text - TextMeshPro NOT from UI>Text - TextMeshPro this is not supported yet.
  5. Add a TMP3D_Handler component from Script>Ikaroon.TMP3D>TMP3D_Handler
  6. Apply the FontAsset to the TextMeshPro component
  7. You have now access to 3D text!

Notice

Work on this project happens in my freetime and, therefore, I cannot promise if and when certain features are added. I am considering to open this up for contribution but for now you can manipulate the code as you please. This project is MIT licensed and may be used freely. (Check the license file for more information)

Bugs

When you find a bug you can create a bug report on Github! I will try to cover them as quickly as possible.

Donation

If this project helped you, you can treat me to a coffee if you want ☕

ko-fi

Contact

If you need support with this package please contact me: support@marian-brinkmann.com

Footnotes

  1. Tempering with the SDF values in the distance makes raymarching more difficult, I need to find a good way of evaluating the shortest distance. 2

  2. I currently don't have access to any VR device and, therefore, cannot optimize for it right now.

  3. Support for OpenGLES2 is currently NOT planned.

  4. I currently don't have access to any Mac and, therefore, cannot test it for Metal right now.

About

A small extension that makes 3D text with Unity's TextMeshPro possible. It uses raymarching and a geometry shader to work around the limitations of TMP at the moment

License:Other


Languages

Language:HLSL 42.1%Language:C# 38.2%Language:ShaderLab 19.8%