Skip to content

Commit e9f7d34

Browse files
authored
Merge pull request #31 from ArielG-NV/support-hlsl-raypayload-and-access-qualifiers
Add grammer for raypayload decoration and raypayload variable qualifiers
2 parents 2d15c19 + 3db9cf0 commit e9f7d34

File tree

1 file changed

+70
-18
lines changed

1 file changed

+70
-18
lines changed

syntaxes/slang.tmLanguage.json

Lines changed: 70 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,6 @@
3838
"match": "\\b(const|extern|register|restrict|static|volatile|inline|nointerpolation|precise|row_major|column_major|snorm|unorm|globallycoherent|layout)\\b",
3939
"name": "storage.modifier.slang"
4040
},
41-
{
42-
"match": "\\bk[A-Z]\\w*\\b",
43-
"name": "constant.other.variable.mac-classic.slang"
44-
},
45-
{
46-
"match": "\\bg[A-Z]\\w*\\b",
47-
"name": "variable.other.readwrite.global.mac-classic.slang"
48-
},
49-
{
50-
"match": "\\bs[A-Z]\\w*\\b",
51-
"name": "variable.other.readwrite.static.mac-classic.slang"
52-
},
5341
{
5442
"match": "\\b(nullptr|none|true|false)\\b",
5543
"name": "constant.language.slang"
@@ -472,6 +460,33 @@
472460
"patterns": [
473461
{
474462
"include": "#block_innards"
463+
},
464+
{
465+
"name": "meta.variable.qualifer",
466+
"begin":"(?x) (\\b([a-zA-Z_][a-zA-Z_0-9]*)\\b)\\s*(?=:\\s*((read|write).*))",
467+
"beginCaptures": {
468+
"1": {
469+
"name": "variable.other.slang"
470+
},
471+
"3": {
472+
"patterns": [
473+
{
474+
"include": "#access_qualifier"
475+
}
476+
]
477+
}
478+
},
479+
"end": ";",
480+
"endCaptures": {
481+
"0": {
482+
"name": "punctuation.semicolon.slang"
483+
}
484+
},
485+
"patterns": [
486+
{
487+
"include": "#access_qualifier"
488+
}
489+
]
475490
}
476491
]
477492
}
@@ -2895,12 +2910,19 @@
28952910
"name": "storage.type.built-in.primitive.slang"
28962911
},
28972912
{
2898-
"match": "\\b(namespace|enum|enum\\s+class|struct|class|interface)\\s+([A-Za-z0-9_]+)((\\.|::)([A-Za-z0-9_]+))*",
2913+
"match": "\\b(namespace|enum|enum\\s+class|struct|class|interface)\\s+(\\[.*\\])?\\s*([A-Za-z0-9_]+)((\\.|::)([A-Za-z0-9_]+))*",
28992914
"captures":{
29002915
"1": {"name": "keyword.$1.slang" },
2901-
"2": {"name": "support.type.$1.slang" },
2902-
"4": {"name": "punctuation.separator.dot-access.slang"},
2903-
"5": {"name": "support.type.$1.slang" }
2916+
"3": {
2917+
"patterns": [
2918+
{
2919+
"include": "meta.bracket.square.access.slang"
2920+
}
2921+
]
2922+
},
2923+
"4": {"name": "support.type.$1.slang" },
2924+
"6": {"name": "punctuation.separator.dot-access.slang"},
2925+
"7": {"name": "support.type.$1.slang" }
29042926
}
29052927
},
29062928
{
@@ -3351,8 +3373,38 @@
33513373
]
33523374
},
33533375
"vararg_ellipses": {
3354-
"match": "(?<!\\.)\\.\\.\\.(?!\\.)",
3355-
"name": "punctuation.vararg-ellipses.slang"
3376+
"match": "(?<!\\.)\\.\\.\\.(?!\\.)",
3377+
"name": "punctuation.vararg-ellipses.slang"
3378+
},
3379+
"shader_stages": {
3380+
"match": "\\b(vertex|fragment|compute|hull|domain|geometry|raygen|intersection|anyhit|closesthit|miss|mesh|amplification|callable)\\b",
3381+
"name": "variable.other.constant.shader_stage"
3382+
},
3383+
"access_qualifier": {
3384+
"name": "meta.variable.qualifer.access_qualifier",
3385+
"match": "(?x)(:)\\s*\\b(read|write)\\b \\((([A-z]+)(,\\s*([A-z]+)\\s*)*)?(\\))",
3386+
"captures": {
3387+
"1": {
3388+
"name": "punctuation.separator.delimiter.colon.slang"
3389+
},
3390+
"2": {
3391+
"name": "keyword.other.additional.slang"
3392+
},
3393+
"3": {
3394+
"patterns": [
3395+
{
3396+
"include":"#shader_stages"
3397+
}
3398+
]
3399+
},
3400+
"5": {
3401+
"patterns": [
3402+
{
3403+
"include":"#shader_stages"
3404+
}
3405+
]
3406+
}
3407+
}
33563408
}
33573409
},
33583410
"name": "Slang"

0 commit comments

Comments
 (0)