; Merged Mod: .\1. Freminetdress\Freminet.ini, .\2. Freminettsbikini\Freminet.ini, .\3. Freminettsmain\Freminet.ini, .\4. Freminettsbody\Freminet.ini

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

[Constants]
global persist $swapvar = 0
global $active
global $creditinfo = 0

[KeySwap]
condition = $active == 1
key = ]
back = [
type = cycle
$swapvar = 0,1,2,3
$creditinfo = 0

[Present]
post $active = 0

; Shader ------------------------------

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

[TextureOverrideFreminetPosition]
hash = 86559a85
run = CommandListFreminetPosition
$active = 1

[TextureOverrideFreminetBlend]
hash = dc9e9ad0
run = CommandListFreminetBlend

[TextureOverrideFreminetTexcoord]
hash = 4000c72b
run = CommandListFreminetTexcoord

[TextureOverrideFreminetVertexLimitRaise]
hash = 7bf55145

[TextureOverrideFreminetIB]
hash = 6d40de64
;hash = 6d40de64
run = CommandListFreminetIB

[TextureOverrideFreminetHead]
hash = 6d40de64
;hash = 6d40de64
match_first_index = 0
run = CommandListFreminetHead

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

[TextureOverrideFreminetBody]
hash = 6d40de64
;hash = 6d40de64
match_first_index = 36975
run = CommandListFreminetBody

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

[TextureOverrideFreminetFaceHeadDiffuse]
hash = e35468b8
run = CommandListFreminetFaceHeadDiffuse

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

[CommandListFreminetPosition]
if $swapvar == 0
	vb0 = ResourceFreminetPosition.0
else if $swapvar == 1
	vb0 = ResourceFreminetPosition.1
else if $swapvar == 2
	vb0 = ResourceFreminetPosition.2
else if $swapvar == 3
	vb0 = ResourceFreminetPosition.3
endif

[CommandListFreminetBlend]
if $swapvar == 0
	vb1 = ResourceFreminetBlend.0
	handling = skip
	draw = 54679,0
else if $swapvar == 1
	vb1 = ResourceFreminetBlend.1
	handling = skip
	draw = 50821,0
else if $swapvar == 2
	vb1 = ResourceFreminetBlend.2
	handling = skip
	draw = 61625,0
else if $swapvar == 3
	vb1 = ResourceFreminetBlend.3
	handling = skip
	draw = 38696,0
endif

[CommandListFreminetTexcoord]
if $swapvar == 0
	vb1 = ResourceFreminetTexcoord.0
else if $swapvar == 1
	vb1 = ResourceFreminetTexcoord.1
else if $swapvar == 2
	vb1 = ResourceFreminetTexcoord.2
else if $swapvar == 3
	vb1 = ResourceFreminetTexcoord.3
endif

[CommandListFreminetIB]
if $swapvar == 0
	handling = skip
	drawindexed = auto
else if $swapvar == 1
	handling = skip
	drawindexed = auto
else if $swapvar == 2
	handling = skip
	drawindexed = auto
else if $swapvar == 3
	handling = skip
	drawindexed = auto
endif

[CommandListFreminetHead]
if $swapvar == 0
	ib = ResourceFreminetHeadIB.0
	ps-t0 = ResourceFreminetHeadNormalMap.0
	ps-t1 = ResourceFreminetHeadDiffuse.0
	ps-t2 = ResourceFreminetHeadLightMap.0
else if $swapvar == 1
	ib = ResourceFreminetHeadIB.1
	ps-t0 = ResourceFreminetHeadNormalMap.1
	ps-t1 = ResourceFreminetHeadDiffuse.1
	ps-t2 = ResourceFreminetHeadLightMap.1
else if $swapvar == 2
	ib = ResourceFreminetHeadIB.2
	ps-t0 = ResourceFreminetHeadNormalMap.2
	ps-t1 = ResourceFreminetHeadDiffuse.2
	ps-t2 = ResourceFreminetHeadLightMap.2
else if $swapvar == 3
	ib = ResourceFreminetHeadIB.3
	ps-t0 = ResourceFreminetHeadNormalMap.3
	ps-t1 = ResourceFreminetHeadDiffuse.3
	ps-t2 = ResourceFreminetHeadLightMap.3
endif

[CommandListFreminetBody]
if $swapvar == 0
	ib = ResourceFreminetBodyIB.0
	ps-t0 = ResourceFreminetBodyNormalMap.0
	ps-t1 = ResourceFreminetBodyDiffuse.0
	ps-t2 = ResourceFreminetBodyLightMap.0
else if $swapvar == 1
	ib = ResourceFreminetBodyIB.1
	ps-t0 = ResourceFreminetBodyNormalMap.1
	ps-t1 = ResourceFreminetBodyDiffuse.1
	ps-t2 = ResourceFreminetBodyLightMap.1
else if $swapvar == 2
	ib = ResourceFreminetBodyIB.2
	ps-t0 = ResourceFreminetBodyNormalMap.2
	ps-t1 = ResourceFreminetBodyDiffuse.2
	ps-t2 = ResourceFreminetBodyLightMap.2
else if $swapvar == 3
	ib = ResourceFreminetBodyIB.3
	ps-t0 = ResourceFreminetBodyNormalMap.3
	ps-t1 = ResourceFreminetBodyDiffuse.3
	ps-t2 = ResourceFreminetBodyLightMap.3
endif

[CommandListFreminetFaceHeadDiffuse]
if $swapvar == 0
	ps-t0 = ResourceFreminetFaceHeadDiffuse.0
else if $swapvar == 1
	ps-t0 = ResourceFreminetFaceHeadDiffuse.1
else if $swapvar == 2
	ps-t0 = ResourceFreminetFaceHeadDiffuse.2
else if $swapvar == 3
	ps-t0 = ResourceFreminetFaceHeadDiffuse.3
endif

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

[ResourceFreminetPosition.0]
type = Buffer
stride = 40
filename = .\1. Freminetdress\FreminetPosition.buf

[ResourceFreminetBlend.0]
type = Buffer
stride = 32
filename = .\1. Freminetdress\FreminetBlend.buf

[ResourceFreminetTexcoord.0]
type = Buffer
stride = 12
filename = .\1. Freminetdress\FreminetTexcoord.buf

[ResourceFreminetHeadIB.0]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = .\1. Freminetdress\FreminetHead.ib

[ResourceFreminetBodyIB.0]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = .\1. Freminetdress\FreminetBody.ib

[ResourceFreminetHeadNormalMap.0]
filename = .\1. Freminetdress\FreminetHeadNormalMap.dds

[ResourceFreminetHeadDiffuse.0]
filename = .\1. Freminetdress\FreminetHeadDiffuse.dds

[ResourceFreminetHeadLightMap.0]
filename = .\1. Freminetdress\FreminetHeadLightMap.dds

[ResourceFreminetBodyNormalMap.0]
filename = .\1. Freminetdress\FreminetBodyNormalMap.dds

[ResourceFreminetBodyDiffuse.0]
filename = .\1. Freminetdress\FreminetBodyDiffuse.dds

[ResourceFreminetBodyLightMap.0]
filename = .\1. Freminetdress\FreminetBodyLightMap.dds

[ResourceFreminetFaceHeadDiffuse.0]
filename = .\1. Freminetdress\FreminetFaceHeadDiffuse.dds

[ResourceFreminetPosition.1]
type = Buffer
stride = 40
filename = .\2. Freminettsbikini\FreminetPosition.buf

[ResourceFreminetBlend.1]
type = Buffer
stride = 32
filename = .\2. Freminettsbikini\FreminetBlend.buf

[ResourceFreminetTexcoord.1]
type = Buffer
stride = 12
filename = .\2. Freminettsbikini\FreminetTexcoord.buf

[ResourceFreminetHeadIB.1]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = .\2. Freminettsbikini\FreminetHead.ib

[ResourceFreminetBodyIB.1]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = .\2. Freminettsbikini\FreminetBody.ib

[ResourceFreminetHeadNormalMap.1]
filename = .\2. Freminettsbikini\FreminetHeadNormalMap.dds

[ResourceFreminetHeadDiffuse.1]
filename = .\2. Freminettsbikini\FreminetHeadDiffuse.dds

[ResourceFreminetHeadLightMap.1]
filename = .\2. Freminettsbikini\FreminetHeadLightMap.dds

[ResourceFreminetBodyNormalMap.1]
filename = .\2. Freminettsbikini\FreminetBodyNormalMap.dds

[ResourceFreminetBodyDiffuse.1]
filename = .\2. Freminettsbikini\FreminetBodyDiffuse.dds

[ResourceFreminetBodyLightMap.1]
filename = .\2. Freminettsbikini\FreminetBodyLightMap.dds

[ResourceFreminetFaceHeadDiffuse.1]
filename = .\2. Freminettsbikini\FreminetFaceHeadDiffuse.dds

[ResourceFreminetPosition.2]
type = Buffer
stride = 40
filename = .\3. Freminettsmain\FreminetPosition.buf

[ResourceFreminetBlend.2]
type = Buffer
stride = 32
filename = .\3. Freminettsmain\FreminetBlend.buf

[ResourceFreminetTexcoord.2]
type = Buffer
stride = 12
filename = .\3. Freminettsmain\FreminetTexcoord.buf

[ResourceFreminetHeadIB.2]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = .\3. Freminettsmain\FreminetHead.ib

[ResourceFreminetBodyIB.2]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = .\3. Freminettsmain\FreminetBody.ib

[ResourceFreminetHeadNormalMap.2]
filename = .\3. Freminettsmain\FreminetHeadNormalMap.dds

[ResourceFreminetHeadDiffuse.2]
filename = .\3. Freminettsmain\FreminetHeadDiffuse.dds

[ResourceFreminetHeadLightMap.2]
filename = .\3. Freminettsmain\FreminetHeadLightMap.dds

[ResourceFreminetBodyNormalMap.2]
filename = .\3. Freminettsmain\FreminetBodyNormalMap.dds

[ResourceFreminetBodyDiffuse.2]
filename = .\3. Freminettsmain\FreminetBodyDiffuse.dds

[ResourceFreminetBodyLightMap.2]
filename = .\3. Freminettsmain\FreminetBodyLightMap.dds

[ResourceFreminetFaceHeadDiffuse.2]
filename = .\3. Freminettsmain\FreminetFaceHeadDiffuse.dds

[ResourceFreminetPosition.3]
type = Buffer
stride = 40
filename = .\4. Freminettsbody\FreminetPosition.buf

[ResourceFreminetBlend.3]
type = Buffer
stride = 32
filename = .\4. Freminettsbody\FreminetBlend.buf

[ResourceFreminetTexcoord.3]
type = Buffer
stride = 12
filename = .\4. Freminettsbody\FreminetTexcoord.buf

[ResourceFreminetHeadIB.3]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = .\4. Freminettsbody\FreminetHead.ib

[ResourceFreminetBodyIB.3]
type = Buffer
format = DXGI_FORMAT_R32_UINT
filename = .\4. Freminettsbody\FreminetBody.ib

[ResourceFreminetHeadNormalMap.3]
filename = .\4. Freminettsbody\FreminetHeadNormalMap.dds

[ResourceFreminetHeadDiffuse.3]
filename = .\4. Freminettsbody\FreminetHeadDiffuse.dds

[ResourceFreminetHeadLightMap.3]
filename = .\4. Freminettsbody\FreminetHeadLightMap.dds

[ResourceFreminetBodyNormalMap.3]
filename = .\4. Freminettsbody\FreminetBodyNormalMap.dds

[ResourceFreminetBodyDiffuse.3]
filename = .\4. Freminettsbody\FreminetBodyDiffuse.dds

[ResourceFreminetBodyLightMap.3]
filename = .\4. Freminettsbody\FreminetBodyLightMap.dds

[ResourceFreminetFaceHeadDiffuse.3]
filename = .\4. Freminettsbody\FreminetFaceHeadDiffuse.dds



; .ini generated by GIMI (Genshin-Impact-Model-Importer) mod merger script
; 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
