Jump to content

[mod] [CostumeCustomizer] DOAXVV mods by tantrave


Recommended Posts

On 3/15/2020 at 11:37 PM, tantrave said:

@Mrakobez

It doesn't happen in my environment, so there may be something else.

 

It was a weird bug. I managed to fix it by installing the mods in previous costume slots. For some reason costumes in slot 14 don't save correctly. I'll probably test it more carefully later.

Link to comment
  • 3 weeks later...
  • 4 weeks later...

@tantrave - I've been able to reproduce the issue. The Fortune Mod-Pack mod may be doing nothing wrong, but I think its the first mod-pack to actually utilize custom tan textures and it may have uncovered an edge case that I'm not properly handling in CC. Unfortunately, I think in order to reproduce the issue, its linked to when the game naturally fades the character's tan over time, so it may be difficult for me to test potential fixes.

 

If anyone encounters the issue, try selecting a different preset and then switch back to the Fortune. I've had success with that correcting the issue temporarily but I'm not sure if you have a tan applied if it'll still work or not. I only just now realized the issue is likely associated with the custom tanning shader I implemented in CC.

 

Additional work-around: It seems like it doesn't seem to occur during switching if you switch to an unused slot first before switching to Fortune (preset or per bra/panty category). (FYI: May still come back the next day from time passing though, still investigating).

 

 

Edit: I think I've found the issue. The ps-t3 texture seems to be overloaded in it's uses. Only the Red channel is used for tanning, while the Green and Blue channels are used for other purposes. The issue occurs with Fortune because those Green/Blue channels don't match up with the rest of the body. I don't exactly know how to determine what they supposed to be used for, it's called the "SkinMask" in the shaders. I could stop replacing the ps-t3 during the body draw calls and only use it during the Tan shader which would allow the Green/Blue channels to mismatch, however whatever functionality you can get out of purposefully altering the Green/Blue channels would be lost for modding purposes (whatever they may be), or Fortune's tan texture needs to be corrected by copying the Red channel only into the original ps-t3 texture file to keep the green/blue channels matched up.

 

Possible fixed tan dds file for Fortune:

Tan_Common.dds

 

Channel differences (Base on the left, Fortune on Right):

Spoiler

Red (Tan)

image.png.3f3ce805449eee1a51c571d2b0e776f7.png

 

Green (Mask part 1 - .y value)

image.png.e4f47cfe5393898d86d926e64c98d099.png

 

Blue (Mask part 2 - .z value)

image.png.2e13de8fe9cfedcf83a53d0f49645de4.png

 

Shader logic:

 

Spoiler

 Skin Pixel Shader

gSamplerSkinDiffuse_Texture is the ps-t1 texture.

gSamplerSkinMask_Texture is the ps-t3 texture.

 

  r0.x = gSamplerSkinMask_Texture.Sample(gSamplerSkinMask_SamplerState_s, v1.xy).z;
  r0.y = 255 * r0.x;
  r0.y = round(r0.y);
  r0.y = (int)r0.y;
  r0.z = gSamplerDepth_Texture.Sample(gSamplerDepth_SamplerState_s, v1.xy).x;
  r0.z = -gDepthRebuildParam.x + r0.z;
  r0.z = gDepthRebuildParam.y / r0.z;
  r1.xyz = gSamplerSkinDiffuse_Texture.Sample(gSamplerSkinDiffuse_SamplerState_s, v1.xy).xyz;
  r0.y = (int)r0.y + -1;
  r0.w = gBlurDir.y + -1;
  r0.w = cmp(abs(r0.w) < 0.00999999978);
  r1.w = gRateParam.y * r0.z;
  r2.x = cmp(gRateParam.z >= r1.w);
  r1.w = cmp(r1.w >= gRateParam.w);
  r0.z = -r0.z * gRateParam.y + gRateParam.w;
  r2.y = gRateParam.w + -gRateParam.z;
  r0.z = r0.z / r2.y;
  r0.z = 0.0120000001 * r0.z;
  r0.z = r1.w ? 0 : r0.z;
  r0.z = r2.x ? 0.0120000001 : r0.z;
  r0.y = gBlurParam[r0.y].z * r0.z;
  r0.yz = gBlurDir.xy * r0.yy;
  r0.yz = float2(0.333333343,0.333333343) * r0.yz;
  r1.xyz = gKernel[0].xyz * r1.xyz;
  r2.xyz = r1.xyz;
  r3.xyz = gKernel[0].xyz;
  r1.w = 1;
  while (true) {
    r2.w = cmp((int)r1.w >= 20);
    if (r2.w != 0) break;
    r4.xy = gKernel[r1.w].ww * r0.yz + v1.xy;
    r2.w = gSamplerSkinMask_Texture.Sample(gSamplerSkinMask_SamplerState_s, r4.xy).z;
    r2.w = cmp(r0.x == r2.w);
    r3.w = r2.w ? 1.000000 : 0;
    r4.xyz = gSamplerSkinDiffuse_Texture.Sample(gSamplerSkinDiffuse_SamplerState_s, r4.xy).xyz;
    r4.xyz = r2.www ? r4.xyz : 0;
    r2.xyz = gKernel[r1.w].xyz * r4.xyz + r2.xyz;
    r3.xyz = gKernel[r1.w].xyz * r3.www + r3.xyz;
    r1.w = (int)r1.w + 1;
  }
  r0.xyz = max(float3(9.99999975e-005,9.99999975e-005,9.99999975e-005), r3.xyz);
  r0.xyz = r2.xyz / r0.xyz;
  if (r0.w != 0) {
    r1.xyz = gSamplerSkinMaterialDiffuse_Texture.Sample(gSamplerSkinMaterialDiffuse_SamplerState_s, v1.xy).xyz;
    r2.xyz = gSamplerSkinSpecular_Texture.Sample(gSamplerSkinSpecular_SamplerState_s, v1.xy).xyz;
    r0.xyz = r0.xyz * r1.xyz + r2.xyz;
  }
  o0.xyz = r0.xyz;
  o0.w = 0;
  return;

 

Link to comment

Re: Fortune

In addition to KuroKaze's fix, I had to change two lines in the Common.ini to fix skin color when switching to another costume after Fortune.

In the Common.ini I searched for "ResourceFortuneBodyBreast_TAN"

and noticed, that the Resource assignments didn't have the "ref" in front... adding "ref" seemed to have fixed the problem.

e.g. " Resource\Mods\Costumes\CostumeCustomizer\Common.ini\BodyBreastPS3 = ref ResourceFortuneBodyBreast_TAN"

 

*Edit, see KuroKaze's remark here on why you may not want to do this.

 

Link to comment

@krunkDunk - I am planing on fixing all the resource copies to properly use refs in the next update, but if you make manual modifications now, it can be a problem if some of the mod-packs are doing ref copies and some aren't. The current INI auto-generation had all textures resources not using ref copies I thought which should be fine. But as soon as a single mod-pack is changed to use refs, it can have it's resources overwritten by any other mod-pack that is still doing a full copy. This is why the next CC version will have to include a way for users to regenerate all CC Mod-Pack INI files in order to fix all of them at the same time.

 

In this case, I didn't have to make any other changes than just the skin file, but like I mentioned it does depend on what other mod-packs you have installed if they deviated from the auto-generation already, plus it's possible I personally have untracked modifications still active in my CC framework INI files from test/prototyping modifications. I only tested on my Steam copy since I tend to leave it with my latest unmodified version of CC Framework.

Link to comment
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use