; EFMI ALPHA-5 INI

; Mod Info -------------------------

[ResourceModName]
type = Buffer
data = "FatrolizeLaevatain"

[ResourceModAuthor]
type = Buffer
data = "NAHCYOR"

[ResourceModDesc]
; type = Buffer
; data = "Empty Mod Description"

[ResourceModLink]
; type = Buffer
; data = "Empty Mod Link"

[ResourceModLogo]
filename = Textures/Logo.dds

; Mod State -------------------------

[Constants]
global $required_efmi_version = 1.10
global $object_guid = 265794
global $mesh_vertex_count = 0
global $mod_id = -1000
global $mod_enabled = 0
global $object_detected = 0
global $lod_detected
global persist $top = 3
global persist $shorts = 1
global persist $shoes = 1
global persist $silk = 1
global persist $sleeves = 1
global persist $tail = 1
global persist $nips = 1
global persist $face = 1
global $body_bones_recorded = 0
[keyswap-top]
condition = $object_detected == 1 && $lod_detected == 0
key = alt 1
type = cycle
$top = 3,2,1,0

[keyswap-shorts]
condition = $object_detected == 1 && $lod_detected == 0
key = alt 2
type = cycle
$shorts = 1,0

[keyswap-sleeves]
condition = $object_detected == 1 && $lod_detected == 0 && $top != 0
key = alt 3
type = cycle
$sleeves = 1,0

[keyswap-shoes]
condition = $object_detected == 1 && $lod_detected == 0
key = alt 4
type = cycle
$shoes = 1,0

[keyswap-silk]
condition = $object_detected == 1 && $lod_detected == 0
key = alt 5
type = cycle
$silk = 1,0

[keyswap-nipples]
condition = $object_detected == 1 && $lod_detected == 0
key = alt 6
type = cycle
$nips = 1,0

[keyswap-tail]
condition = $object_detected == 1 && $lod_detected == 0
key = alt 7
type = cycle
$tail = 1,0

[keyswap-face]
condition = $object_detected == 1 && $lod_detected == 0
key = alt 8
type = cycle
$face = 1,0
[Present]
if $object_detected
    if $mod_enabled
        post $object_detected = 0
    else
        if $mod_id == -1000
            run = CommandListRegisterMod
        endif
    endif
endif
post $lod_detected = 0
[CommandListRegisterMod]
$\EFMIv1\required_version = $required_efmi_version
$\EFMIv1\object_guid = $object_guid
Resource\EFMIv1\ModName = ref ResourceModName
Resource\EFMIv1\ModAuthor = ref ResourceModAuthor
Resource\EFMIv1\ModDesc = ref ResourceModDesc
Resource\EFMIv1\ModLink = ref ResourceModLink
run = CommandList\EFMIv1\RegisterMod
$mod_id = $\EFMIv1\mod_id
if $mod_id >= 0
    $mod_enabled = 1
endif

; Shading: Custom Mesh Draw CommandLists -------------------------

[CommandList_Draw_Component0]
ib = ref Resource_Component0_IB
vb0 = ref Resource_Component0_VB0
vb1 = ref Resource_Component0_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component0_VB2
else
    vb2 = ref Resource_Component0_VB2_LOD
endif
; Draw Component 0 Hand
drawindexedinstanced = 9960, INSTANCE_COUNT, 0, 0, FIRST_INSTANCE
; Draw Component 0 Horns
drawindexedinstanced = 6264, INSTANCE_COUNT, 9960, 0, FIRST_INSTANCE
; Draw Component 0 Shoes
if $shoes == 1
drawindexedinstanced = 22782, INSTANCE_COUNT, 16224, 0, FIRST_INSTANCE
endif

; Draw Component 0 Shorts
if $shorts == 1
drawindexedinstanced = 5892, INSTANCE_COUNT, 39006, 0, FIRST_INSTANCE
endif

; Draw Component 0 ShortsHead
if $top != 0
drawindexedinstanced = 10890, INSTANCE_COUNT, 44898, 0, FIRST_INSTANCE
endif

; Draw Component 0 SleevesHead
if $sleeves == 1 && $top != 0
drawindexedinstanced = 32244, INSTANCE_COUNT, 55788, 0, FIRST_INSTANCE
endif

; Draw Component 0 SleevesStuff
if $sleeves == 1 && $top != 0
drawindexedinstanced = 894, INSTANCE_COUNT, 88032, 0, FIRST_INSTANCE
endif

; Draw Component 0 Stuff
if $top != 0
drawindexedinstanced = 2328, INSTANCE_COUNT, 88926, 0, FIRST_INSTANCE
endif

if vs == 202 || vs == 203
    if $lod_detected == 0
        cs-t2 = ResourceID_Body3
        run = CustomShader_RedirectCB1_Body3
        vs-t0 = ResourceFakeT0_SRV_Body3
        vs-cb2 = ResourceFakeCB1_Body3
    elif $lod_detected == 1
        cs-t2 = ResourceID_Body4
        run = CustomShader_RedirectCB1_Body4
        vs-t0 = ResourceFakeT0_SRV_Body4
        vs-cb2 = ResourceFakeCB1_Body4
    endif

ib = ref Resource_Component6_IB
vb0 = ref Resource_Component6_VB0
vb1 = ref Resource_Component6_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component6_VB2
else
    vb2 = ref Resource_Component6_VB2_LOD
endif
ps-t17 = ResourceC0
ps-t18 = ResourceC0L
ps-t19 = ResourceC0N
; Draw Component 6 BoobaClothTop
if $top == 3
drawindexedinstanced = 3168, INSTANCE_COUNT, 2103, 0, FIRST_INSTANCE
endif

; Draw Component 6 BoobaClothUnder
if $top >= 2
drawindexedinstanced = 2103, INSTANCE_COUNT, 0, 0, FIRST_INSTANCE
endif

; Draw Component 6 CoatOut
if $top != 0 
drawindexedinstanced = 20445, INSTANCE_COUNT, 5271, 0, FIRST_INSTANCE
; Draw Component 6 CoatTop
drawindexedinstanced = 975, INSTANCE_COUNT, 25716, 0, FIRST_INSTANCE
; Draw Component 6 NeckCloth
drawindexedinstanced = 6132, INSTANCE_COUNT, 26691, 0, FIRST_INSTANCE
endif

; Draw Component 6 NipplePierecing
if $nips == 1
drawindexedinstanced = 14100, INSTANCE_COUNT, 32823, 0, FIRST_INSTANCE
endif
endif

    post vs-cb2 = null
    post vs-t0 = null
    post cs-t2 = null

[CommandList_Draw_Component1]
ib = ref Resource_Component1_IB
vb0 = ref Resource_Component1_VB0
vb1 = ref Resource_Component1_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component1_VB2
else
    vb2 = ref Resource_Component1_VB2_LOD
endif
; Draw Component 1 Hair
drawindexedinstanced = 80781, INSTANCE_COUNT, 0, 0, FIRST_INSTANCE

[CommandList_Draw_Component2]
if $face == 1
if $lod_detected == 1
ps-t17 = ResourceFace
else 
ps-t18 = ResourceFace
endif
else
if $lod_detected == 1
ps-t17 = ResourceFaceR
else 
ps-t18 = ResourceFaceR
endif
endif

ib = ref Resource_Component2_IB
vb0 = ref Resource_Component2_VB0
vb1 = ref Resource_Component2_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component2_VB2
else
    vb2 = ref Resource_Component2_VB2_LOD
endif
; Draw Component 2 Face
drawindexedinstanced = 8322, INSTANCE_COUNT, 0, 0, FIRST_INSTANCE

[CommandList_Draw_Component4]
ib = ref Resource_Component4_IB
vb0 = ref Resource_Component4_VB0
vb1 = ref Resource_Component4_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component4_VB2
else
    vb2 = ref Resource_Component4_VB2_LOD
endif
; Draw Component 4 Iris
drawindexedinstanced = 1572, INSTANCE_COUNT, 0, 0, FIRST_INSTANCE

[CommandListSetSkin]
ResourceSetS = copy ps-t1
[ResourceSetS]

[CommandList_Draw_Component6]
ps-t14 = ResourceC0
ps-t15 = ResourceC0N
run = CommandListSetSkin
ib = ref Resource_Component6_IB
vb0 = ref Resource_Component6_VB0
vb1 = ref Resource_Component6_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component6_VB2
else
    vb2 = ref Resource_Component6_VB2_LOD
endif

if vs == 200 || vs == 201 || vs == 204
    if $lod_detected == 0
        if vs == 200
            run = CustomShader_ExtractCaptureCB1
            cs-t2 = ResourceID_Body
            run = CustomShader_RecordBones_Body3
            run = CustomShader_RedirectCB1_Body3
            vs-t0 = ResourceFakeT0_SRV_Body3
            vs-cb1 = ResourceFakeCB1_Body3
        elif vs == 201
            run = CustomShader_ExtractCB1
            cs-t2 = ResourceID_Body3
            run = CustomShader_RecordBones_Body3
            run = CustomShader_RedirectCB1_Body3
            vs-t0 = ResourceFakeT0_SRV_Body3
            vs-cb2 = ResourceFakeCB1_Body3
        endif
    elif $lod_detected == 1
        if vs == 200
            run = CustomShader_ExtractCaptureCB1
            cs-t2 = ResourceID_Body4
            run = CustomShader_RecordBones_Body4
            run = CustomShader_RedirectCB1_Body4
            vs-t0 = ResourceFakeT0_SRV_Body4
            vs-cb1 = ResourceFakeCB1_Body4
        elif vs == 201
            run = CustomShader_ExtractCB1
            cs-t2 = ResourceID_Body4
            run = CustomShader_RecordBones_Body4
            run = CustomShader_RedirectCB1_Body4
            vs-t0 = ResourceFakeT0_SRV_Body4
            vs-cb2 = ResourceFakeCB1_Body4
        endif
    endif
	
; Draw Component 6 BoobaClothTop
if $top == 3
drawindexedinstanced = 3168, INSTANCE_COUNT, 2103, 0, FIRST_INSTANCE
endif

; Draw Component 6 BoobaClothUnder
if $top >= 2
drawindexedinstanced = 2103, INSTANCE_COUNT, 0, 0, FIRST_INSTANCE
endif

; Draw Component 6 CoatOut
if $top != 0 
drawindexedinstanced = 20445, INSTANCE_COUNT, 5271, 0, FIRST_INSTANCE
; Draw Component 6 CoatTop
drawindexedinstanced = 975, INSTANCE_COUNT, 25716, 0, FIRST_INSTANCE
; Draw Component 6 NeckCloth
drawindexedinstanced = 6132, INSTANCE_COUNT, 26691, 0, FIRST_INSTANCE
endif

; Draw Component 6 NipplePierecing
if $nips == 1
drawindexedinstanced = 14100, INSTANCE_COUNT, 32823, 0, FIRST_INSTANCE
endif
endif

    post vs-cb1 = null
    post vs-cb2 = null
    post vs-t0 = null
    post cs-t2 = null

[CommandList_Draw_Component6-Body]
ps-t14 = ResourceSkin
ps-t15 = ResourceSkinN
ib = ref Resource_Component6_IB
vb0 = ref Resource_Component6_VB0
vb1 = ref Resource_Component6_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component6_VB2
else
    vb2 = ref Resource_Component6_VB2_LOD
endif
; Draw Component 6.Body.Nude
drawindexedinstanced = 131100, INSTANCE_COUNT, 46923, 0, FIRST_INSTANCE

if vs == 202 || vs == 203
    if $lod_detected == 0
        cs-t2 = ResourceID_Body
        run = CustomShader_RedirectCB1_Body
        vs-t0 = ResourceFakeT0_SRV_Body
        vs-cb2 = ResourceFakeCB1_Body
    elif $lod_detected == 1
        cs-t2 = ResourceID_Body2
        run = CustomShader_RedirectCB1_Body2
        vs-t0 = ResourceFakeT0_SRV_Body2
        vs-cb2 = ResourceFakeCB1_Body2
    endif

ib = ref Resource_Component9_IB
vb0 = ref Resource_Component9_VB0
vb1 = ref Resource_Component9_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component9_VB2
else
    vb2 = ref Resource_Component9_VB2_LOD
endif
ps-t14 = ResourceSkin
ps-t15 = ResourceSkinN
; Draw Component 9.Body.Feet
if $silk == 0
if $shoes == 0
drawindexedinstanced = 9402, INSTANCE_COUNT, 0, 0, FIRST_INSTANCE
endif
endif

; Draw Component 9.Body.Leg
if $silk == 0
drawindexedinstanced = 61974, INSTANCE_COUNT, 9402, 0, FIRST_INSTANCE
endif

; Draw Component 9.Body.SilkTop
if $silk == 1
drawindexedinstanced = 50016, INSTANCE_COUNT, 92736, 0, FIRST_INSTANCE
endif
endif

    post vs-cb2 = null
    post vs-t0 = null
    post cs-t2 = null

[CommandList_Draw_Component7]
ib = ref Resource_Component7_IB
vb0 = ref Resource_Component7_VB0
vb1 = ref Resource_Component7_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component7_VB2
else
    vb2 = ref Resource_Component7_VB2_LOD
endif
; Draw Component 7 SleevesBody
if $sleeves == 1 && $top != 0
drawindexedinstanced = 2556, INSTANCE_COUNT, 0, 0, FIRST_INSTANCE
endif

; Draw Component 7 SleevesHead
if $sleeves == 1 && $top != 0
drawindexedinstanced = 3888, INSTANCE_COUNT, 2556, 0, FIRST_INSTANCE
endif

[CommandList_Draw_Component8]
ib = ref Resource_Component8_IB
vb0 = ref Resource_Component8_VB0
vb1 = ref Resource_Component8_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component8_VB2
else
    vb2 = ref Resource_Component8_VB2_LOD
endif
; Draw Component 8 Tail
if $tail == 1
drawindexedinstanced = 20331, INSTANCE_COUNT, 0, 0, FIRST_INSTANCE
endif

[CommandList_Draw_Component9]
ib = ref Resource_Component9_IB
vb0 = ref Resource_Component9_VB0
vb1 = ref Resource_Component9_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component9_VB2
else
    vb2 = ref Resource_Component9_VB2_LOD
endif


; Draw Component 9.Body.SilkFeet
if $silk == 1
if $shoes == 0
drawindexedinstanced = 9402, INSTANCE_COUNT, 71376, 0, FIRST_INSTANCE
endif
endif

; Draw Component 9.Body.SilkLeg
if $silk == 1
drawindexedinstanced = 11958, INSTANCE_COUNT, 80778, 0, FIRST_INSTANCE
endif



[CommandList_Draw_Component9-mod]
ps-t1 = ResourceSetS
ps-t15 = ResourceSkin
ps-t16 = ResourceSkinL
ps-t17 = ResourceSkinN
ib = ref Resource_Component9_IB
vb0 = ref Resource_Component9_VB0
vb1 = ref Resource_Component9_VB1
if $lod_detected == 0
    vb2 = ref Resource_Component9_VB2
else
    vb2 = ref Resource_Component9_VB2_LOD
endif

if vs == 200 || vs == 201
    if $lod_detected == 0
        if vs == 200
            run = CustomShader_ExtractCaptureCB1
            vs-cb1 = ResourceFakeCB1_Body
        elif vs == 201
            run = CustomShader_ExtractCB1
            vs-cb2 = ResourceFakeCB1_Body
        endif
			cs-t2 = ResourceID_Body
            run = CustomShader_RecordBones_Body
            run = CustomShader_RedirectCB1_Body
            vs-t0 = ResourceFakeT0_SRV_Body
    elif $lod_detected == 1
        if vs == 200
            run = CustomShader_ExtractCaptureCB1
            cs-t2 = ResourceID_Body2
            vs-cb1 = ResourceFakeCB1_Body2
        elif vs == 201
            run = CustomShader_ExtractCB1
            cs-t2 = ResourceID_Body2
            vs-cb2 = ResourceFakeCB1_Body2
        endif
			run = CustomShader_RecordBones_Body2
            run = CustomShader_RedirectCB1_Body2
            vs-t0 = ResourceFakeT0_SRV_Body2
    endif
	
; Draw Component 9.Body.Feet
if $silk == 0
if $shoes == 0
drawindexedinstanced = 9402, INSTANCE_COUNT, 0, 0, FIRST_INSTANCE
endif
endif

; Draw Component 9.Body.Leg
if $silk == 0
drawindexedinstanced = 61974, INSTANCE_COUNT, 9402, 0, FIRST_INSTANCE
endif

; Draw Component 9.Body.SilkTop
if $silk == 1
drawindexedinstanced = 50016, INSTANCE_COUNT, 92736, 0, FIRST_INSTANCE
endif
endif

    post vs-cb1 = null
    post vs-cb2 = null
    post vs-t0 = null
    post cs-t2 = null



; Shading: Full Models Draw Call Stacks Processing -------------------------

[TextureOverride_Component0]
hash = 586b4574
match_index_count = 123174
$object_detected = 1
$lod_detected = 0
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component0
endif

[TextureOverride_Component1]
hash = c0bb7cd6
match_index_count = 80781
$object_detected = 1
$lod_detected = 0
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component1
endif

[TextureOverride_Component2]
hash = c3806ef1
match_index_count = 8322
$object_detected = 1
$lod_detected = 0
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component2
endif

[TextureOverride_Component3]
hash = 28ab9d1b
match_index_count = 1158
$object_detected = 1
$lod_detected = 0
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    ; Draw skipped: No matching custom components found
    ; run = CommandList_Draw_Component3
endif

[TextureOverride_Component4]
hash = 2c3fe540
match_index_count = 1572
$object_detected = 1
$lod_detected = 0
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component4
endif

[TextureOverride_Component5]
hash = 0224158d
$object_detected = 1
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    ; Draw skipped: No matching custom components found
    ; run = CommandList_Draw_Component5
endif

[TextureOverride_Component6]
hash = 7091ba4f
match_index_count = 6252
$object_detected = 1
$lod_detected = 0
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component6
	run = CommandList_Draw_Component6-Body
endif

[TextureOverride_Component7]
hash = be538c65
match_index_count = 8622
$object_detected = 1
$lod_detected = 0
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component7
endif

[TextureOverride_Component8]
hash = 06e91fc9
match_index_count = 20331
$object_detected = 1
$lod_detected = 0
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component8
endif

[TextureOverride_Component9]
hash = d5cc14a2
match_index_count = 6192
$object_detected = 1
$lod_detected = 0
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component9
	run = CommandList_Draw_Component9-mod
endif

[TextureOverride_Component10]
hash = e88b25bf
$object_detected = 1
$lod_detected = 0
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    ; Draw skipped: No matching custom components found
    ; run = CommandList_Draw_Component10
endif

; Shading: LoD Models Draw Call Stacks Processing -------------------------

[TextureOverride_Component0_LOD0]
hash = b7808834
match_index_count = 48711
$object_detected = 1
$lod_detected = 1
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component0
endif

[TextureOverride_Component1_LOD0]
hash = 0bddef03
match_index_count = 40482
$object_detected = 1
$lod_detected = 1
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component1
endif

[TextureOverride_Component2_LOD0]
hash = c3806ef1
match_index_count = 8322
$object_detected = 1
$lod_detected = 1
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component2
endif

[TextureOverride_Component3_LOD0]
hash = 30c8e217
match_index_count = 1044
$object_detected = 1
$lod_detected = 1
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    ; Draw skipped: No matching custom components found
    ; run = CommandList_Draw_Component3
endif

[TextureOverride_Component4_LOD0]
hash = fd0879a9
$object_detected = 1
$lod_detected = 1
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component4
endif

[TextureOverride_Component6_LOD0]
hash = e4119ff0
match_index_count = 4560
$object_detected = 1
$lod_detected = 1
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component6
	run = CommandList_Draw_Component6-Body
endif

[TextureOverride_Component7_LOD0]
hash = ea595f84
match_index_count = 2514
$object_detected = 1
$lod_detected = 1
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component7
endif

[TextureOverride_Component8_LOD0]
hash = 82993ed5
match_index_count = 6957
$object_detected = 1
$lod_detected = 1
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component8
endif

[TextureOverride_Component9_LOD0]
hash = 3cdaab07
match_index_count = 3750
$object_detected = 1
$lod_detected = 1
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    run = CommandList_Draw_Component9
	run = CommandList_Draw_Component9-mod
endif

[TextureOverride_Component10_LOD0]
hash = c92ac28c
match_index_count = 1434
$object_detected = 1
$lod_detected = 1
if $mod_enabled && DRAW_TYPE == 4
    handling = skip
    ; Draw skipped: No matching custom components found
    ; run = CommandList_Draw_Component10
endif

; Shading: Textures -------------------------
[ResourceFace]
filename = Textures/Face.dds
[ResourceFaceR]
filename = Textures/FaceR.png
[ResourceSkinN]
filename = Textures/SkinNormal.dds
[ResourceSkin]
filename = Textures/Skin.png
[ResourceSkinL]
filename = Textures/SkinL.dds
[ResourceC0L]
filename = Textures/C0L.dds
[ResourceC0N]
filename = Textures/C0N.dds
[ResourceC0]
filename = Textures/C0.dds
; Resources: Buffers -------------------------

[Resource_Component0_IB]
type = Buffer
format = DXGI_FORMAT_R16_UINT
stride = 6
filename = Meshes/Component0_IB.buf

[Resource_Component0_VB0]
type = Buffer
stride = 16
filename = Meshes/Component0_VB0.buf

[Resource_Component0_VB1]
type = Buffer
stride = 20
filename = Meshes/Component0_VB1.buf

[Resource_Component0_VB2]
type = Buffer
stride = 12
filename = Meshes/Component0_VB2.buf

[Resource_Component0_VB2_LOD]
type = Buffer
stride = 12
filename = Meshes/Component0_VB2_LOD.buf

[Resource_Component1_IB]
type = Buffer
format = DXGI_FORMAT_R16_UINT
stride = 6
filename = Meshes/Component1_IB.buf

[Resource_Component1_VB0]
type = Buffer
stride = 16
filename = Meshes/Component1_VB0.buf

[Resource_Component1_VB1]
type = Buffer
stride = 12
filename = Meshes/Component1_VB1.buf

[Resource_Component1_VB2]
type = Buffer
stride = 12
filename = Meshes/Component1_VB2.buf

[Resource_Component1_VB2_LOD]
type = Buffer
stride = 12
filename = Meshes/Component1_VB2_LOD.buf

[Resource_Component2_IB]
type = Buffer
format = DXGI_FORMAT_R16_UINT
stride = 6
filename = Meshes/Component2_IB.buf

[Resource_Component2_VB0]
type = Buffer
stride = 16
filename = Meshes/Component2_VB0.buf

[Resource_Component2_VB1]
type = Buffer
stride = 12
filename = Meshes/Component2_VB1.buf

[Resource_Component2_VB2]
type = Buffer
stride = 12
filename = Meshes/Component2_VB2.buf

[Resource_Component2_VB2_LOD]
type = Buffer
stride = 12
filename = Meshes/Component2_VB2_LOD.buf

[Resource_Component4_IB]
type = Buffer
format = DXGI_FORMAT_R16_UINT
stride = 6
filename = Meshes/Component4_IB.buf

[Resource_Component4_VB0]
type = Buffer
stride = 16
filename = Meshes/Component4_VB0.buf

[Resource_Component4_VB1]
type = Buffer
stride = 8
filename = Meshes/Component4_VB1.buf

[Resource_Component4_VB2]
type = Buffer
stride = 4
filename = Meshes/Component4_VB2.buf

[Resource_Component4_VB2_LOD]
type = Buffer
stride = 4
filename = Meshes/Component4_VB2_LOD.buf

[Resource_Component6_IB]
type = Buffer
format = DXGI_FORMAT_R16_UINT
stride = 6
filename = Meshes/Component6_IB.buf

[Resource_Component6_VB0]
type = Buffer
stride = 16
filename = Meshes/Component6_VB0.buf

[Resource_Component6_VB1]
type = Buffer
stride = 12
filename = Meshes/Component6_VB1.buf

[Resource_Component6_VB2]
type = Buffer
stride = 12
filename = Meshes/Component6_VB2.buf

[Resource_Component6_VB2_LOD]
type = Buffer
stride = 12
filename = Meshes/Component6_VB2_LOD.buf

[Resource_Component7_IB]
type = Buffer
format = DXGI_FORMAT_R16_UINT
stride = 6
filename = Meshes/Component7_IB.buf

[Resource_Component7_VB0]
type = Buffer
stride = 16
filename = Meshes/Component7_VB0.buf

[Resource_Component7_VB1]
type = Buffer
stride = 12
filename = Meshes/Component7_VB1.buf

[Resource_Component7_VB2]
type = Buffer
stride = 12
filename = Meshes/Component7_VB2.buf

[Resource_Component7_VB2_LOD]
type = Buffer
stride = 12
filename = Meshes/Component7_VB2_LOD.buf

[Resource_Component8_IB]
type = Buffer
format = DXGI_FORMAT_R16_UINT
stride = 6
filename = Meshes/Component8_IB.buf

[Resource_Component8_VB0]
type = Buffer
stride = 16
filename = Meshes/Component8_VB0.buf

[Resource_Component8_VB1]
type = Buffer
stride = 12
filename = Meshes/Component8_VB1.buf

[Resource_Component8_VB2]
type = Buffer
stride = 12
filename = Meshes/Component8_VB2.buf

[Resource_Component8_VB2_LOD]
type = Buffer
stride = 12
filename = Meshes/Component8_VB2_LOD.buf

[Resource_Component9_IB]
type = Buffer
format = DXGI_FORMAT_R16_UINT
stride = 6
filename = Meshes/Component9_IB.buf

[Resource_Component9_VB0]
type = Buffer
stride = 16
filename = Meshes/Component9_VB0.buf

[Resource_Component9_VB1]
type = Buffer
stride = 20
filename = Meshes/Component9_VB1.buf

[Resource_Component9_VB2]
type = Buffer
stride = 12
filename = Meshes/Component9_VB2.buf

[Resource_Component9_VB2_LOD]
type = Buffer
stride = 12
filename = Meshes/Component9_VB2_LOD.buf

; Autogenerated -------------------------

; This mod.ini was automatically generated by EFMI Tools Blender addon v0.3.6 and requires EFMI v1.1.0+ to function

; EFMI Tools GitHub: https://github.com/SpectrumQT/EFMI-Tools
; EFMI Package GitHub: https://github.com/SpectrumQT/EFMI-Package
; XXMI Launcher GitHub: https://github.com/SpectrumQT/XXMI-Launcher
; EFMI Mods Website: https://gamebanana.com/games/21842
; EFMI GameBanana: https://gamebanana.com/tools/21846
; EFMI Tools GameBanana: https://gamebanana.com/tools/21847
; AGMF Modding Community Discord: https://discord.com/invite/agmf
; SHA256 CHECKSUM: e775337c7751deea2d0a61aacb023822a2be7add2e18a8137f016179cebfe5f7
; 跨IB起手式1 不需要更改-------------------------
[ResourceDumpedCB1_UAV]
type = RWStructuredBuffer
stride = 16
array = 4096

[ResourceDumpedCB1_SRV]
type = Buffer
stride = 16
array = 4096

[ResourceFakeCB1_UAV]
type = RWStructuredBuffer
stride = 16
array = 4096

[ResourceFakeCB1]
type = Buffer
stride = 16
format = R32G32B32A32_UINT
array = 4096

[ResourceFakeT0_UAV]
type = RWStructuredBuffer
stride = 16
array = 200000

[ResourceFakeT0_SRV]
type = StructuredBuffer
stride = 16
array = 200000

; 部位身份卡，参与跨IB的部位都需要有对应的编号
[ResourceID_Body]
type = Buffer
format = R32_FLOAT
data = 0.0

[ResourceID_body2]
type = Buffer
format = R32_FLOAT
data = 1000.0

[ResourceID_Body3]
type = Buffer
format = R32_FLOAT
data = 2000.0

[ResourceID_body4]
type = Buffer
format = R32_FLOAT
data = 3000.0

[CustomShader_ExtractCB1]
vs = hlsl/extract_cb1_vs.hlsl
ps = hlsl/extract_cb1_ps.hlsl
ps-u7 = ResourceDumpedCB1_UAV
depth_enable = false  
blend = ADD SRC_ALPHA INV_SRC_ALPHA
cull = none  
topology = point_list
draw = 4096, 0 
ps-u7 = null
ResourceDumpedCB1_SRV = copy ResourceDumpedCB1_UAV

[CustomShader_RecordBones]
cs = hlsl/record_bones_cs.hlsl
cs-t0 = vs-t0
cs-t1 = ResourceDumpedCB1_SRV
cs-u1 = ResourceFakeT0_UAV
dispatch = 12, 1, 1
cs-u1 = null
cs-t0 = null
cs-t1 = null
ResourceFakeT0_SRV = copy ResourceFakeT0_UAV

[CustomShader_RedirectCB1]
cs = hlsl/redirect_cb1_cs.hlsl
cs-t0 = ResourceDumpedCB1_SRV
cs-u0 = ResourceFakeCB1_UAV
dispatch = 4, 1, 1
cs-u0 = null
cs-t0 = null
ResourceFakeCB1 = copy ResourceFakeCB1_UAV

[ShaderOverridevs1000]
hash = f11c7e1dbf876a69
filter_index = 200
allow_duplicate_hash = overrule

[ShaderOverridevs1001]
hash = 303f45d5266d0369
filter_index = 201
allow_duplicate_hash = overrule

[ShaderOverridevs1002]
hash = 7b3a141f99cd9b39
filter_index = 201
allow_duplicate_hash = overrule

[ShaderOverridevs1003]
hash = 1479b2b594b9c91a
filter_index = 202
allow_duplicate_hash = overrule

[ShaderOverridevs1004]
hash = c6e55aaa8f4b3218
filter_index = 202
allow_duplicate_hash = overrule

[ShaderOverridevs1005]
hash = 784f11ae11c97112
filter_index = 203
allow_duplicate_hash = overrule

[ShaderOverridevs1006]
hash = f1b10202c73c72c3
filter_index = 204
allow_duplicate_hash = overrule

[ShaderOverridevs1007]
hash = 12ad3cc5f56f853c
filter_index = 204
allow_duplicate_hash = overrule

[ShaderOverridevs1008]
hash = 86cb3bc0a3e2e013
filter_index = 204
allow_duplicate_hash = overrule

[ShaderOverridevs1009]
hash = 906a3976f3e33cfb
filter_index = 204
allow_duplicate_hash = overrule

[ShaderOverridevs1010]
hash = 0ba16985f9f74f8d
filter_index = 204
allow_duplicate_hash = overrule

[ShaderOverridevs1011]
hash = 06c94dd56f447210
filter_index = 204
allow_duplicate_hash = overrule

[ShaderOverridevs1012]
hash = f47b1f797f5831d0
filter_index = 204
allow_duplicate_hash = overrule

[ShaderOverridevs1002_Dash]
hash = 42dd9f741023c301
filter_index = 201
allow_duplicate_hash = overrule

[ShaderOverridevs1003_Dash]
hash = 782ce44386acac15
filter_index = 202
allow_duplicate_hash = overrule

[ShaderOverridevs1004_Dash]
hash = 5917c7d5faf324ee
filter_index = 202
allow_duplicate_hash = overrule

[CustomShader_ExtractCaptureCB1]
vs = hlsl/extract_capture_cb1_vs.hlsl
ps = hlsl/extract_cb1_ps.hlsl
ps-u7 = ResourceDumpedCB1_UAV
depth_enable = false
blend = ADD SRC_ALPHA INV_SRC_ALPHA
cull = none
topology = point_list
draw = 4096, 0
ps-u7 = null
ResourceDumpedCB1_SRV = copy ResourceDumpedCB1_UAV

[ResourceFakeCB1_UAV_Body]
type = RWStructuredBuffer
stride = 16
array = 4096

[ResourceFakeCB1_Body]
type = Buffer
stride = 16
format = R32G32B32A32_UINT
array = 4096

[ResourceFakeT0_UAV_Body]
type = RWStructuredBuffer
stride = 16
array = 200000

[ResourceFakeT0_SRV_Body]
type = StructuredBuffer
stride = 16
array = 200000

[CustomShader_RecordBones_Body]
cs = hlsl/record_bones_cs.hlsl
cs-t0 = vs-t0
cs-t1 = ResourceDumpedCB1_SRV
cs-u1 = ResourceFakeT0_UAV_Body
dispatch = 12, 1, 1
cs-u1 = null
cs-t0 = null
cs-t1 = null
ResourceFakeT0_SRV_Body = copy ResourceFakeT0_UAV_Body

[CustomShader_RedirectCB1_Body]
cs = hlsl/redirect_cb1_cs.hlsl
cs-t0 = ResourceDumpedCB1_SRV
ResourceFakeCB1_UAV_Body = copy ResourceDumpedCB1_SRV
cs-u0 = ResourceFakeCB1_UAV_Body
dispatch = 4, 1, 1
cs-u0 = null
cs-t0 = null
ResourceFakeCB1_Body = copy ResourceFakeCB1_UAV_Body

[CustomShader_RecordBones_Body2]
cs = hlsl/record_bones_cs.hlsl
cs-t0 = vs-t0
cs-t1 = ResourceDumpedCB1_SRV
cs-u1 = ResourceFakeT0_UAV_Body2
dispatch = 12, 1, 1
cs-u1 = null
cs-t0 = null
cs-t1 = null
ResourceFakeT0_SRV_Body2 = copy ResourceFakeT0_UAV_Body2

[CustomShader_RedirectCB1_Body2]
cs = hlsl/redirect_cb1_cs.hlsl
cs-t0 = ResourceDumpedCB1_SRV
ResourceFakeCB1_UAV_Body2 = copy ResourceDumpedCB1_SRV
cs-u0 = ResourceFakeCB1_UAV_Body2
dispatch = 4, 1, 1
cs-u0 = null
cs-t0 = null
ResourceFakeCB1_Body2 = copy ResourceFakeCB1_UAV_Body2

[ResourceFakeCB1_UAV_Body2]
type = RWStructuredBuffer
stride = 16
array = 4096

[ResourceFakeCB1_Body2]
type = Buffer
stride = 16
format = R32G32B32A32_UINT
array = 4096

[ResourceFakeT0_UAV_Body2]
type = RWStructuredBuffer
stride = 16
array = 200000

[ResourceFakeT0_SRV_Body2]
type = StructuredBuffer
stride = 16
array = 200000

[CustomShader_RecordBones_Body3]
cs = hlsl/record_bones_cs.hlsl
cs-t0 = vs-t0
cs-t1 = ResourceDumpedCB1_SRV
cs-u1 = ResourceFakeT0_UAV_Body3
dispatch = 12, 1, 1
cs-u1 = null
cs-t0 = null
cs-t1 = null
ResourceFakeT0_SRV_Body3 = copy ResourceFakeT0_UAV_Body3

[CustomShader_RedirectCB1_Body3]
cs = hlsl/redirect_cb1_cs.hlsl
cs-t0 = ResourceDumpedCB1_SRV
ResourceFakeCB1_UAV_Body3 = copy ResourceDumpedCB1_SRV
cs-u0 = ResourceFakeCB1_UAV_Body3
dispatch = 4, 1, 1
cs-u0 = null
cs-t0 = null
ResourceFakeCB1_Body3 = copy ResourceFakeCB1_UAV_Body3

[ResourceFakeCB1_UAV_Body3]
type = RWStructuredBuffer
stride = 16
array = 4096

[ResourceFakeCB1_Body3]
type = Buffer
stride = 16
format = R32G32B32A32_UINT
array = 4096

[ResourceFakeT0_UAV_Body3]
type = RWStructuredBuffer
stride = 16
array = 200000

[ResourceFakeT0_SRV_Body3]
type = StructuredBuffer
stride = 16
array = 200000

[CustomShader_RecordBones_Body4]
cs = hlsl/record_bones_cs.hlsl
cs-t0 = vs-t0
cs-t1 = ResourceDumpedCB1_SRV
cs-u1 = ResourceFakeT0_UAV_Body4
dispatch = 12, 1, 1
cs-u1 = null
cs-t0 = null
cs-t1 = null
ResourceFakeT0_SRV_Body4 = copy ResourceFakeT0_UAV_Body4

[CustomShader_RedirectCB1_Body4]
cs = hlsl/redirect_cb1_cs.hlsl
cs-t0 = ResourceDumpedCB1_SRV
ResourceFakeCB1_UAV_Body4 = copy ResourceDumpedCB1_SRV
cs-u0 = ResourceFakeCB1_UAV_Body4
dispatch = 4, 1, 1
cs-u0 = null
cs-t0 = null
ResourceFakeCB1_Body4 = copy ResourceFakeCB1_UAV_Body4

[ResourceFakeCB1_UAV_Body4]
type = RWStructuredBuffer
stride = 16
array = 4096

[ResourceFakeCB1_Body4]
type = Buffer
stride = 16
format = R32G32B32A32_UINT
array = 4096

[ResourceFakeT0_UAV_Body4]
type = RWStructuredBuffer
stride = 16
array = 200000

[ResourceFakeT0_SRV_Body4]
type = StructuredBuffer
stride = 16
array = 200000