// ---- Created with 3Dmigoto v1.3.16 on Thu Feb 19 14:34:27 2026
cbuffer cb0 : register(b0)
{
  float4 cb0[7];
}




// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);


void main(
  float4 v0 : SV_POSITION0,
  float2 v1 : TEXCOORD0,
  float w1 : TEXCOORD5,
  float4 v2 : TEXCOORD1,
  float4 v3 : TEXCOORD2,
  float4 v4 : TEXCOORD3,
  float3 v5 : TEXCOORD4,
  out float4 o0 : SV_Target0)
{
  float4 r0;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.x = dot(v2.xyz, v3.xyz);
  r0.x = 1 + -r0.x;
  r0.x = -cb0[5].x + r0.x;
  r0.y = 1 / cb0[5].y;
  r0.x = saturate(r0.x * r0.y);

  // 1. 获取原始边缘光的颜色和强度
  float3 originalRim = cb0[6].xyz * r0.xxx * cb0[6].www;

  // 2. 根据你提供的公式计算亮度 (Luma)
  // 注意：这里使用 originalRim 作为输入，确保只有边缘部分会被染色
  float luma = dot(originalRim.xyz, float3(0.299, 0.587, 0.114));

  // 3. 将亮度映射到樱花粉色 (Sakura Pink)
  // float3(1.8, 0.8, 1.1) 会给红色和蓝色通道增益，形成粉紫色调
  float3 sakuraColor = luma * float3(1.8, 0.8, 1.1);

  // 4. 将处理后的樱花粉边缘光叠加到基础颜色 cb0[1] 上
  r0.xyz = sakuraColor + cb0[1].xyz;
  o0.xyz = cb0[4].yyy * r0.xyz;
  r0.x = saturate(cb0[1].w);
  r0.y = cb0[4].z * cb0[4].x;
  o0.w = r0.x * r0.y;
  return;
}
