| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
| |
* remove unused variables, functions, keywords
* rename fixedN to floatN
* move min/max raymarch distance to top of ray_march.cginc
* fix frame emission
|
| |
|
|
|
|
| |
There's some bug around using the raymarched world position to write the
depth buffer. I wasn't able to find it quickly, so for now, use the
original world position to write the depth buffer.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Increase units by a factor of 100 to avoid running into numerical
instability on 32-bit floats. This comes at zero measured performance
cost. This makes a visible difference in quality.
Other minor changes:
* Raymarching loop tries to get up to 4x closer than
MINIMUM_HIT_DISTANCE before bailing out. This comes at no measured
performance cost.
* Convert `fixed` types to `float` in STT_text.cginc.
|
| | |
|
| |
|
|
|
| |
Regression created while optimizing shader. Performance still around 730
microseconds on my computer with this change.
|
| |
|
|
|
| |
Use symmetry to reduce # of distance calculations by 50%. Because the
pyramid can be skewed, we can't reduce this by another factor of 2.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Using PIX to quantify changes, reduce raymarcher runtime from ~1.0 ms to
~850 us.
In order of impact:
* Tighten raymarch min/max distances
* Make `in_mirror` check truly branchless
* Gate ellipsis animation with non-divergent if statement
Everything else is < 10 microseconds of improvement.
|
| |
|
|
|
|
|
| |
Not yet done:
* Animator toggle
* OSC integration
|
| |
|
|
|
| |
The chatbox background would not completely disappear at _Emerge = 0, so
two dots would show up when the chatbox spawns.
|
| |
|
|
| |
Performance impact remains to be seen.
|
| |
|
|
|
| |
Remove unused code & cruft. Ray marcher now updates i.worldPos before
executing PBR shading, which fixes some artifacts.
|
| |
|
|
|
| |
No UVs for raymarched geometry yet, so drop textures. Also drop most
old shader settings.
|
| |
|
|
| |
Looks more like a comic-style speech bubble now.
|
| |
|
|
| |
* Fix mirror behavior for ray-marched chatbox
|
| | |
|
| |
|
|
|
|
|
|
| |
* Refactor shader code to make development easier. Templates are now
as small as possible.
* Update scaling code. Use Unity scaling instead of a blendshape.
* Check in a fuckton of shader FOSS. Mostly unused.
* Update TaSTT.fbx. Now has 6 faces instead of 2.
|
| |
|
|
|
|
|
| |
* Fix thin outline in transparent region of rounded corners
* Remove anti-aliasing. Now that VRC supports it natively, this is no
longer necessary.
* Use more efficient noise function for dithering.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
faster-whisper doesn't need it. This reduces install size from 6.00GB
with base.en model to 1.70GB.
* Use a single sampler in shader (enables using more than 16 textures)
* Minor legibility regression - need to improve AA.
* Enable backface culling in shader (minor performance win)
|
| |
|
|
|
|
|
| |
Depth was being calculated wrong, causing text box to render behind
objects it's in front of.
* Fix package.ps1 compression. 7z was increasing file size, somehow.
|
| |
|
|
|
|
|
|
| |
This fixes issues where the transparent corners of the textbox render
in front of other materials, causing those other materials to skip
rendering.
* Update README.md with roadmap and avatar resource usage.
|
| |
|
|
|
|
|
|
|
|
| |
We used to populate 7 4k textures + 1 2k texture for all users.
Now if the user has configured `bytes_per_char=1` in the Unity
panel, we just populate a single 512x512 texture containing the
first 128 ASCII characters.
This reduces texture memory usage by 99.74%, from 134.67 MB to
340 KB.
|
| | |
|
| |
|
|
|
|
|
|
| |
Don't render any part of an emote with alpha < 0.5. Improves visual
clarity in the common case at the cost of generality.
* Emotes now use physically-based shading.
* Use round() to denoise shader parameters instead of floor()
|
| |
|
|
|
|
|
|
|
|
|
| |
Emotes require 2 bytes per char. They're encoded into the region
[0xE000, infinity). The texture is 4k, and uses 1k vertical pixels
per emote segment, for a maximum of 32 segments.
* Reduce volume of noise indicator by 90%. Quiet is probably better.
Might want to add a volume slider idk.
* Bugfix: emotes without a transparency channel now work
* Address a couple Unity performance complaints about the shader
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Done:
* Users can add images to Fonts/Emotes/
* The basename of that image ('clueless.png' becomes 'clueless') is the
keyword to make the image show up in game.
* Fix a bug in the shader where letters on the 2nd texture and later
would have UV outside of [0.0, 1.0]
Not yet implemented:
* transcribed words are encoded using emotes mapping
|
| |
|
|
| |
Applied to both PBS and TaSTT shaders.
|
| |
|
|
| |
Diffuse reflections can show up on this part.
|
| |
|
|
|
|
|
| |
Sample the texture up to 5 times using the algorithm shown in
`aa_sample_algorithm.py`. Results are averaged together.
* Redo dithering PRNG
|
| |
|
|
|
|
|
|
|
| |
I realized that ddx(i.uv.x) tells us how wide the current pixel is w/r/t
UV coordinates. We can use this to implement a better form of dithering,
which gets weaker as the viewer gets closer and stronger as they get
farther.
* Fine-tune mip map filtering based on play testing
|
| |
|
|
|
| |
Strip out everything except the PBS bits from the TaSTT shader and put
them into a standalone shader.
|
| |
|
|
|
|
| |
* Fix prefab: bounding box & position are now set to 0
* Fix shader: text is no longer upside down
* Update README
|
| |
|
|
|
|
| |
Users can now use PBR textures on their custom backplate!
* Update TaSTT.fbx: UV map aspect ratio matches board
|
| |
|
|
|
|
|
| |
Metallics now reflect the map's cubemap.
* Remove SpecularTint (did nothing)
* Adjust mipBias to be sharper
|
| |
|
|
|
|
|
|
|
| |
Need to calculate this in the space of letter UVs, not the overall text
box UV space, in order for the correct mip maps to be chosen.
* Expose dithering as a toggle in the shader
* Actually generate mipmaps
* Fine-tune mipmapBias for legibility
|
| |
|
|
|
|
| |
* Enable streaming mipmaps on glyph bitmaps
* Sample glyph bitmaps using mipmaps
* Add temporal noise to letter UVs (dithering)
|
| |
|
|
|
|
| |
* Render at 3k render queue to avoid clashing with avatar meshes
* Set reasonable shader defaults
* Remove unused material
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
TaSTT shader now uses physically based rendering (PBR). Users can pick
smoothness, metallic, and emissive.
This implementation borrows heavily from catlikecoding.com's excellent
tutorials, which are released under MIT No Attribution (MIT-0).
https://catlikecoding.com/unity/tutorials/license/
To retain what little clarity remains in the shader, I have chosen not
to attribute the code in the source itself.
|
| |
|
|
|
|
|
|
| |
Light color themes revealed a need for a lit shader, since an unlit
shader would be blindingly bright.
This implementation doesn't really work in game. I suspect that I need
to support more than just one global light.
|
| |
|
|
|
|
|
|
| |
* Text color, background color, and margin color are all customizable
now
* Better organize shader parameters. User-facing params are exposed
Like_This; internal params are exposed _Like_This.
* Update README. More wordsmithing.
|
| |
|
|
|
|
|
| |
Don't literally check in Python since it looks dodgy (rightfully so).
Instead the build script just fetches it.
* Update README, simplifying language and documenting other projects
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, paths containing spaces would be interpreted by python's argument
parser as multiple separate arguments, causing it to fail. Now we escape paths
inside PythonWrapper using std::quoted().
* Improve PII filtering. Python output would contain multiple path separators
(like C:\\Users\\foo\\), defeating the PII regex.
* Silence compiler warning in PII filter.
* Document usability improvements.
* Transcription layer exponential backoff goes to ~infinity when paused.
This is a hack, since we really don't need to transcribe at all when paused,
but it lets us keep the code simple. Good enough until the next rewrite.
* Shader only samples background when necessary.
* Limit matchStrings() print()s to DEBUG mode
|
| |
|
|
|
|
|
|
| |
Users can now control how many letters wide and tall the board is.
Tested at 4x48, 5x60, 10x120, and 20x240. At 20x240, Unity freezes and
does not make forward progress. Perhaps creating 4800 float parameters
isn't a truly scalable interface.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now it's possible to generate shaders with a custom number of rows, columns,
and bytes per character.
All edits to the shader should go through TaSTT_template.shader. To generate
a new shader from the template:
$ ./Scripts/generate_shader.py \
--bytes_per_char 2 \
--rows 1 \
--cols 12
--shader_template $(pwd)/Shaders/TaSTT_template.shader \
--shader_path $(pwd)/Shaders/TaSTT.shader
|
| |
|
|
|
|
|
| |
Add a new shader to make the box a little prettier.
* Reduce material slots required from 2 to 1
* Add rounding to edge of box
|
| |
|
|
|
|
| |
* Fix shader background rendering
* Add ability to control margin size
* Add ability to disable speech indicator
|
| |
|
|
| |
Can simply drag this into hierarchy & update reset target.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add emotes.py. It accepts a list of images and creates a texture with 64 total
embedded images.
The shader knows how to draw these into fixed 6-character-wide slots. Each slot
must be aligned to a 6-character boundary. osc_ctrl has to pad with spaces
to make this work.
This whole patch is a little more complicated than it has any right to be, but
my brain feels fuzzy and I don't know where to start fixing it, so I'm going to
leave it shitty-but-functional for now.
There's also some bug where writing a character into the 11th slot causes it to
show up at the end of the board. I'll figure that out later, idk.
I didn't include any of the emotes I use since I couldn't find any info on
their licenses. I'm just banking on having a good workflow later on so
people can add their own.
|
|
|
Reorganize locations, remove a couple unused parameters.
|