@@ -16,6 +16,7 @@ import qualified Data.IntMap as IntMap
1616import qualified Data.List as List
1717import Data.Map ((!))
1818import qualified Data.Map as Map
19+import qualified Data.Set as Set
1920import qualified Data.Text.Encoding as Text
2021
2122import qualified AST.Canonical as Can
@@ -178,9 +179,21 @@ generate mode expression =
178179 , generateJsExpr mode c
179180 ]
180181
181− Opt.Shader src ->
182− let string = JS.String (Text.encodeUtf8Builder src) in
183− JsExpr $ JS.Object [ ( Name.fromLocal "src", string ) ]
182+ Opt.Shader src attributes uniforms ->
183+ let
184+ toTranlation field =
185+ ( Name.fromLocal field
186+ , JS.String (Name.toBuilder (generateField mode field))
187+ )
188+
189+ toTranslationObject fields =
190+ JS.Object (map toTranlation (Set.toList fields))
191+ in
192+ JsExpr $ JS.Object $
193+ [ ( Name.fromLocal "src", JS.String (Text.encodeUtf8Builder src) )
194+ , ( Name.fromLocal "attributes", toTranslationObject attributes )
195+ , ( Name.fromLocal "uniforms", toTranslationObject uniforms )
196+ ]
184197
185198
186199