Skip to content

Commit 602c7cb

Browse files
committed
Added shader-toy.recordOfflineQuality setting.
1 parent b33db3f commit 602c7cb

File tree

5 files changed

+31
-3
lines changed

5 files changed

+31
-3
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ The default is real-time rendering to activate offline rendering set `shader-toy
175175

176176
### Offline rendering parameters
177177

178-
* `shader-toy.recordOfflineQuality`: Offline recording quality. Applies when format is webm or jpg.
178+
* `shader-toy.recordOfflineFormat`: Offline recording format. Possible value are `webm`, `gif`, `png` and `jpg`. PNG and JPEG images are individual images packaged in a .tar archive.
179+
* `shader-toy.recordOfflineQuality`: Offline recording quality. 0 is lowest and 100 highest. Applies when format is `webm` or `jpg`.
179180

180181
## Requirements
181182

@@ -208,6 +209,7 @@ Contributions of any kind are welcome and encouraged.
208209
* Fixed the `shader-toy.recordTargetFramerate` setting.
209210
* Moved the Stats widget to the bottom left, so it doesn't overlap with the GUI.
210211
* Added `shader-toy.recordOffline` to switch between real-time and offline rendering.
212+
* Added `shader-toy.recordOfflineFormat`. Used in conjunction with `shader-toy.recordOffline`
211213
* Added `shader-toy.recordOfflineQuality`. Used in conjunction with `shader-toy.recordOffline`
212214

213215
### 0.11.3

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,15 @@
154154
"default": false,
155155
"description": "Enable high-quality offline recording."
156156
},
157+
"shader-toy.recordOfflineFormat": {
158+
"type": "string",
159+
"default": "webm",
160+
"description": "Offline recording quality. Possible value are webm, gif, png and jpg."
161+
},
157162
"shader-toy.recordOfflineQuality": {
158163
"type": "number",
159164
"default": 80,
160-
"description": "Offline recording quality. Applies when format is webm or jpg."
165+
"description": "Offline recording format. 0 is lowest and 100 highest. Applies when format is webm or jpg."
161166
},
162167
"shader-toy.showPauseButton": {
163168
"type": "boolean",

resources/webview_base.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,11 +503,12 @@
503503

504504
let maxDuration = <!-- Record Max Duration -->;
505505
let targetFrameRate = <!-- Record Target Framerate -->;
506+
let format = <!-- Record Offline Format -->;
506507
let quality = <!-- Record Offline Quality -->;
507508

508509
offlineRecording = true;
509510
recorder = new CCapture( {
510-
format: 'webm',
511+
format: format,
511512
quality: quality,
512513
timeLimit: maxDuration,
513514
framerate: targetFrameRate,
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
'use strict';
2+
3+
import { WebviewExtension } from '../webview_extension';
4+
5+
export class RecordOfflineFormatExtension implements WebviewExtension {
6+
private recordOfflineFormat: string;
7+
8+
public constructor(recordOfflineFormat: string) {
9+
this.recordOfflineFormat = recordOfflineFormat;
10+
}
11+
12+
public generateContent(): string {
13+
return `"${this.recordOfflineFormat}"`;
14+
}
15+
}

src/webviewcontentprovider.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ import { RecordVideoContainerExtension } from './extensions/user_interface/recor
7373
import { RecordVideoCodecExtension } from './extensions/user_interface/record_video_codec_extension';
7474
import { RecordVideoBitRateExtension } from './extensions/user_interface/record_video_bit_rate_extension';
7575
import { RecordMaxDurationExtension } from './extensions/user_interface/record_max_duration_extension';
76+
import { RecordOfflineFormatExtension } from './extensions/user_interface/record_offline_format_extension';
7677
import { RecordOfflineQualityExtension } from './extensions/user_interface/record_offline_quality_extension';
7778

7879
export class WebviewContentProvider {
@@ -422,6 +423,10 @@ export class WebviewContentProvider {
422423
const recordMaxDurationExtension = new RecordMaxDurationExtension(recordMaxDuration);
423424
this.webviewAssembler.addReplaceModule(recordMaxDurationExtension, 'let maxDuration = <!-- Record Max Duration -->;', '<!-- Record Max Duration -->');
424425

426+
const recordOfflineFormat = this.context.getConfig<string>('recordOfflineFormat') || "webm";
427+
const recordOfflineFormatExtension = new RecordOfflineFormatExtension(recordOfflineFormat);
428+
this.webviewAssembler.addReplaceModule(recordOfflineFormatExtension, 'let format = <!-- Record Offline Format -->;', '<!-- Record Offline Format -->');
429+
425430
const recordOfflineQuality = this.context.getConfig<number>('recordOfflineQuality') || 80;
426431
const recordOfflineQualityExtension = new RecordOfflineQualityExtension(recordOfflineQuality);
427432
this.webviewAssembler.addReplaceModule(recordOfflineQualityExtension, 'let quality = <!-- Record Offline Quality -->;', '<!-- Record Offline Quality -->');

0 commit comments

Comments
 (0)