-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Improved rendering engine, recording resilience, and analytics trackingRendering engine tweaks #1674
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Improved rendering engine, recording resilience, and analytics trackingRendering engine tweaks #1674
Changes from all commits
Commits
Show all changes
35 commits
Select commit
Hold shift + click to select a range
09844dd
chore: add target-agent and tmp to gitignore
richiemcilroy 4642b5a
fix(lint): rename unchecked_duration_subtraction to unchecked_time_su…
richiemcilroy 8412033
feat(web): add posthog-growth analytics script
richiemcilroy 2b8ac90
feat(desktop): associate posthog events with authenticated user
richiemcilroy 09eb901
feat(web): add auth_surface tracking to login and signup forms
richiemcilroy d92b0c1
feat(web): track auth events from share overlay
richiemcilroy 66369fd
fix(web): add 7-day window and safer result parsing for signup tracking
richiemcilroy 8273138
fix(web): use proper platform enum in stripe webhook
richiemcilroy 98094b8
refactor(rendering): rewrite cursor interpolation with fixed-timestep…
richiemcilroy a2326c8
feat(rendering): anticipatory click animation and idle fade lookahead
richiemcilroy dcd31ef
perf(rendering): simplify cursor and display motion blur shaders
richiemcilroy 4718c18
feat(project): tune cursor spring, motion blur, and rotation defaults
richiemcilroy f680366
feat(desktop): add cursor tilt slider to config sidebar
richiemcilroy 2cd5d57
fix(desktop): remove unused variables and switch webgpu render to loa…
richiemcilroy 0f964dd
feat(rendering): add edge snapping and continuous zoom-out animation
richiemcilroy 05e12de
refactor(rendering): lazy precomputation and cluster-based zoom focus
richiemcilroy 48e0b5d
perf(rendering): forward-only decoder fallback and pool bounds safety
richiemcilroy db7a216
refactor(recording): extract blocking thread finish and mux error hel…
richiemcilroy a759889
refactor(recording): use shared finish helpers across all muxer imple…
richiemcilroy dc5f9e3
feat(recording): track optional pipeline failures with diagnostics si…
richiemcilroy 4132529
fix(encoding): rebuild video sample buffer for UYVY camera frames
richiemcilroy b9b1a1c
perf(editor): improve playback warmup, buffer drain, and frame skip r…
richiemcilroy bc6abd6
perf(editor): increase renderer channel and add drain-flush-blocking …
richiemcilroy 8d7a032
feat(rendering): integrate cursor tilt, zoom focus, and NV12 startup …
richiemcilroy 48f2edc
refactor: update ZoomFocusInterpolator callers with click_spring and …
richiemcilroy b305a4f
feat(export): add first-frame benchmark with NV12 startup breakdown
richiemcilroy 6959c29
feat(export): add export startup time benchmark example
richiemcilroy d3d7c74
feat(recording): add camera-writer-repro diagnostic example
richiemcilroy bada32f
refactor(recording): extract FinishableEncoderState trait to deduplic…
richiemcilroy 08e7e51
perf(enc-avfoundation): prefer copy_with_new_timing over full sample …
richiemcilroy baf66fb
perf(rendering): use binary search for click lookups in cursor interp…
richiemcilroy 8932583
perf(rendering): use binary search for cursor idle opacity move lookup
richiemcilroy 3e89f9b
fix(rendering): include segment start time in zoom focus interpolatio…
richiemcilroy f6fcbb2
fix(desktop): remove unnecessary type cast on cursor rotationAmount
richiemcilroy a440a32
fix(web): handle array videoId param and use safer array access in Au…
richiemcilroy File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
|
|
@@ -299,8 +299,7 @@ export function renderFrameWebGPU( | |||||||
| colorAttachments: [ | ||||||||
| { | ||||||||
| view: currentTexture.createView(), | ||||||||
| clearValue: { r: 0, g: 0, b: 0, a: 1 }, | ||||||||
| loadOp: "clear", | ||||||||
| loadOp: "load", | ||||||||
| storeOp: "store", | ||||||||
| }, | ||||||||
| ], | ||||||||
|
|
@@ -413,8 +412,7 @@ export function renderNv12FrameWebGPU( | |||||||
| colorAttachments: [ | ||||||||
| { | ||||||||
| view: context.getCurrentTexture().createView(), | ||||||||
| clearValue: { r: 0, g: 0, b: 0, a: 1 }, | ||||||||
| loadOp: "clear", | ||||||||
| loadOp: "load", | ||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
This is the same
Suggested change
Prompt To Fix With AIThis is a comment left during a code review.
Path: apps/desktop/src/utils/webgpu-renderer.ts
Line: 415
Comment:
**Same `loadOp: "load"` concern for Nv12 path**
This is the same `"clear"` → `"load"` change applied to `renderNv12FrameWebGPU`. If the composite pass does not guarantee full pixel coverage on the first frame, the Nv12 render path will have the same stale-pixel risk.
```suggestion
loadOp: "clear",
clearValue: { r: 0, g: 0, b: 0, a: 1 },
```
How can I resolve this? If you propose a fix, please make it concise. |
||||||||
| storeOp: "store", | ||||||||
| }, | ||||||||
| ], | ||||||||
|
|
||||||||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
loadOp: "load"may expose stale pixels on first frameSwitching from
"clear"to"load"skips resetting the attachment toclearValuebefore the render pass. In WebGPU, on the very first frame (or after a resize/GPU-device-lost recovery), the texture contents are undefined —"load"will then composite on top of garbage memory rather than a clean black background. This can manifest as single-frame visual glitches during playback start or after seeking.The same change is applied to both
renderFrameWebGPU(line 301) andrenderNv12FrameWebGPU(line 415).If the goal is to avoid the clear cost when the composite shader always writes every pixel, an alternative is to keep
"clear"but only for the first frame render of a new session. Otherwise, at minimum add a comment confirming the shader guarantees full-pixel coverage so future readers understand the invariant.Prompt To Fix With AI