; Lynette

; Constants -------------------------

; Overrides -------------------------

[TextureOverrideLynettePosition]
hash = 98eb2db4
vb0 = ResourceLynettePosition

[TextureOverrideLynetteBlend]
hash = 42addacd
vb1 = ResourceLynetteBlend
handling = skip
draw = 63683,0 

[TextureOverrideLynetteTexcoord]
hash = f828b5be
vb1 = ResourceLynetteTexcoord

[TextureOverrideLynetteVertexLimitRaise]
hash = 329f5c91

[TextureOverrideLynetteIB]
hash = 39d89255
handling = skip
drawindexed = auto

[TextureOverrideLynetteHead]
hash = 39d89255
match_first_index = 0
ib = ResourceLynetteHeadIB
ps-t0 = ResourceLynetteHeadDiffuse
ps-t1 = ResourceLynetteHeadLightMap

$CharacterIB = 1
ResourceRefHeadDiffuse = reference ps-t1
;ResourceRefHeadLightMap = reference ps-t2

[TextureOverrideLynetteBody]
hash = 39d89255
match_first_index = 16257
ib = ResourceLynetteBodyIB
ps-t0 = ResourceLynetteBodyNormalMap
ps-t1 = ResourceLynetteBodyDiffuse
ps-t2 = ResourceLynetteBodyLightMap

$CharacterIB = 2
ResourceRefBodyDiffuse = reference ps-t1
;ResourceRefBodyLightMap = reference ps-t2

[TextureOverrideLynetteDress]
hash = 39d89255
match_first_index = 65223
ib = ResourceLynetteDressIB
ps-t0 = ResourceLynetteDressDiffuse
ps-t1 = ResourceLynetteDressLightMap

$CharacterIB = 3
ResourceRefDressDiffuse = reference ps-t1
;ResourceRefDressLightMap = reference ps-t2

[TextureOverrideLynetteExtra]
hash = 39d89255
match_first_index = 68358
ib = null
ps-t0 = ResourceLynetteExtraNormalMap
ps-t1 = ResourceLynetteExtraDiffuse
ps-t2 = ResourceLynetteExtraLightMap

; CommandList -----------------------

; Resources -------------------------

$CharacterIB = 4
ResourceRefExtraDiffuse = reference ps-t1
;ResourceRefExtraLightMap = reference ps-t2

[ResourceLynettePosition]
type = Buffer
stride = 40
filename = LynettePosition.buf

[ResourceLynetteBlend]
type = Buffer
stride = 32
filename = LynetteBlend.buf

[ResourceLynetteTexcoord]
type = Buffer
stride = 20
filename = LynetteTexcoord.buf

[ResourceLynetteHeadIB]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = LynetteHead.ib

[ResourceLynetteBodyIB]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = LynetteBody.ib

[ResourceLynetteDressIB]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = LynetteDress.ib

[ResourceLynetteExtraIB]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = LynetteExtra.ib

[ResourceLynetteHeadDiffuse]
filename = LynetteHeadDiffuse.dds

[ResourceLynetteHeadLightMap]
filename = LynetteHeadLightMap.dds

[ResourceLynetteBodyNormalMap]
filename = LynetteBodyNormalMap.dds

[ResourceLynetteBodyDiffuse]
filename = LynetteBodyDiffuse.dds

[ResourceLynetteBodyLightMap]
filename = LynetteBodyLightMap.dds

[ResourceLynetteDressDiffuse]
filename = LynetteDressDiffuse.dds

[ResourceLynetteDressLightMap]
filename = LynetteDressLightMap.dds

[ResourceLynetteExtraNormalMap]
filename = LynetteExtraNormalMap.dds

[ResourceLynetteExtraDiffuse]
filename = LynetteExtraDiffuse.dds

[ResourceLynetteExtraLightMap]
filename = LynetteExtraLightMap.dds


; .ini generated by GIMI (Genshin-Impact-Model-Importer)
; If you have any issues or find any bugs, please open a ticket at https://github.com/SilentNightSound/GI-Model-Importer/issues or contact SilentNightSound#7430 on discord

; Version 1.0.0 AGMG Tool Developer Version 3 Shader Fixer


; Generated shader fix for 3.0+ GIMI importer characters. Please contact the tool developers at https://discord.gg/agmg if you have any questions.

; Variables -----------------------

[Constants]
global $CharacterIB
;0=none, 1=head, 2=body, 3=dress, 4=extra, etc.

[Present]
post $CharacterIB = 0

[ResourceRefHeadDiffuse]
;[ResourceRefHeadLightMap]
[ResourceRefBodyDiffuse]
;[ResourceRefBodyLightMap]
[ResourceRefDressDiffuse]
;[ResourceRefDressLightMap]
[ResourceRefExtraDiffuse]
;[ResourceRefExtraLightMap]

; ShaderOverride ---------------------------

[ShaderRegexCharReflection]
shader_model = ps_5_0
run = CommandListReflectionTexture
[ShaderRegexCharReflection.pattern]
mul r\d+\.\w+, r\d+\.\w+,[^.]*\.\w+\n
mad o\d+\.\w+, r\d+\.\w+, cb\d+\[\d+\]\.\w+, r\d+\.\w+\n
mov o\d+\.\w+, l\(\d+\.\d+\)\n

;[ShaderRegexCharOutline]
;shader_model = ps_5_0
;run = CommandListOutline
;[ShaderRegexCharOutline.pattern]
;mov o\d+\.\w+, l\(\d+\)\n
;mov o\d+\.\w+, r\d+\.\w+\n
;mov o\d+\.\w+, l\(\d+\.\d+\)
;broken as of version 4.0

; OPTIONAL: If regex match breaks, use a [ShaderOverride] command matching shader hash for reflection then use "run = CommandListOutline" under the command

; CommandList -------------------------

[CommandListReflectionTexture]
if $CharacterIB != 0
    if $CharacterIB == 1
        ps-t0 = copy ResourceRefHeadDiffuse
    else if $CharacterIB == 2
        ps-t0 = copy ResourceRefBodyDiffuse
    else if $CharacterIB == 3
        ps-t0 = copy ResourceRefDressDiffuse
    else if $CharacterIB == 4
        ps-t0 = copy ResourceRefExtraDiffuse    
    endif
drawindexed=auto
$CharacterIB = 0
endif

;[CommandListOutline]
;if $CharacterIB != 0
;    if $CharacterIB == 1
;        ps-t1 = copy ResourceRefHeadLightMap
;    else if $CharacterIB == 2
;        ps-t1 = copy ResourceRefBodyLightMap
;    else if $CharacterIB == 3
;        ps-t1 = copy ResourceRefDressLightMap
;    else if $CharacterIB == 4
;        ps-t1 = copy ResourceRefExtraLightMap
;    endif
;drawindexed=auto
;$CharacterIB = 0
;endif
