55
66 let sharedCameraRef: THREE .PerspectiveCamera | null = null ;
77 let sharedTargetRef = new THREE .Vector3 (0 , 0 , 0 );
8-
98 let shaderErrors: string [] = [];
109
10+ // Store reference shaders separately, these don't change during editing
11+ let referenceVertex = ' ' ;
12+ let referenceFragment = ' ' ;
13+
14+ // Update reference shaders only when task changes, not when user edits
15+ $ : if ($taskStore .task ) {
16+ referenceVertex = $taskStore .task .referenceVertexShader ;
17+ referenceFragment = $taskStore .task .referenceFragmentShader ;
18+ }
19+
1120 function setShaderErrors(errors : string []) {
1221 shaderErrors = errors ;
1322 }
1423 </script >
1524
1625<div class =" relative w-full h-full p-4" >
1726 <div class =" grid grid-cols-1 md:grid-cols-2 gap-x-4 gap-y-4 h-full" >
18- <!-- Reference Shader -->
27+ <!-- Reference Shader - Only recompiles when task changes - ->
1928 <div class =" flex flex-col min-h-[200px] md:min-h-0 h-full" >
2029 <h3 class =" text-xl font-medium text-muted-background pb-2" >Reference</h3 >
2130 <div class =" relative flex-1" >
2231 {#if $taskStore .task }
2332 <ShaderPreview
2433 task ={$taskStore .task }
25- vertexShader ={$taskStore . task . referenceVertexShader }
26- fragmentShader ={$taskStore . task . referenceFragmentShader }
34+ vertexShader ={referenceVertex }
35+ fragmentShader ={referenceFragment }
2736 bind:sharedCameraRef
2837 bind:sharedTargetRef
2938 />
3544 </div >
3645 </div >
3746
38- <!-- User Output Shader -->
47+ <!-- User Output Shader - Recompiles on every edit - ->
3948 <div class =" flex flex-col min-h-[200px] md:min-h-0 h-full" >
4049 <h3 class =" text-xl font-medium text-muted-background pb-2" >Output</h3 >
4150 <div class =" relative flex-1" >
5665 </div >
5766 </div >
5867 </div >
59- </div >
68+ </div >
0 commit comments