메뉴 건너뛰기

조회 수 403 추천 수 0 댓글 3


Honeycam 2022-05-13 14-44-39.gif2.4 MB

 

HSV 변경 기능을 만들었더니

리얼화이트를 만들 수 없어서 다시 만들어야했다.

그래서 찾아보니 HSV 말고도 HSL 이란 것도 있었다.

 

문제는 스파인이 Color32로 SetColor 색상을 전달하다보니

RGBA 각각 0~255까지 값 밖에 못 전달하는 게 아닌가.

 

거기에 기본 색상은 255 255 255 255이라서 디폴트 색상은 Color.White 기준으로 나와야했다.

 

그래서 -1 ~ +1 float 기준으로 동작하는 수식에 맞게 동작하도록 input 값을 고쳐주었다.

수식 자체를 고칠 수도 있었겠지만, 난 수학 수업 다 C 받았자너?

 

0.5를 기준으로 밝아질까 어두워질까를 나누고
0, 1 양 끝일 때 원래 색상으로 돌아가게 되어 있는 상황이 되었으므로

UI 조작에서는 이걸 다시 한 번 Lerp 매핑해주어서

UI 상에서는 0.5를 기준으로 원래 색상이 나오도록 해주었다.

 

 

float Epsilon = 1e-10;

float3 rgb2hcv(in float3 RGB)
{
    // Based on work by Sam Hocevar and Emil Persson
    float4 P = lerp(float4(RGB.bg, -1.0, 0.66666), float4(RGB.gb, 0.0, -0.33333), step(RGB.b, RGB.g));
    float4 Q = lerp(float4(P.xyw, RGB.r), float4(RGB.r, P.yzx), step(P.x, RGB.r));
    float C = Q.x - min(Q.w, Q.y);
    float H = abs((Q.w - Q.y) / (6 * C + Epsilon) + Q.z);
    return float3(H, C, Q.x);
}

float3 rgb2hsl(in float3 RGB)
{
    float3 HCV = rgb2hcv(RGB);
    float L = HCV.z - HCV.y * 0.5;
    float S = HCV.y / (1 - abs(L * 2 - 1) + Epsilon);
    return float3(HCV.x, S, L);
}

float3 hsl2rgb(float3 c)
{
    c = float3(frac(c.x), clamp(c.yz, 0.0, 1.0));
    float3 rgb = clamp(abs(fmod(c.x * 6.0 + float3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0, 0.0, 1.0);
    return c.z + c.y * (rgb - 0.5) * (1.0 - abs(2.0 * c.z - 1.0));
}


inline half4 adjustHueOfColor(half4 color, half4 _value)
{
    _value = half4(_value.x, 
        (step(0.5, _value.y) * (1 - (_value.y - 0.5) * 2)) - (step(0.5, (1 - _value.y)) * _value.y * 2),
        (step(0.5, _value.z) * (1 - (_value.z - 0.5) * 2)) - (step(0.5, (1 - _value.z)) * _value.z * 2),
        1);
    float3 hsl = rgb2hsl(color.rgb);
    //float affectMult = step(0, hsl.r) * step(hsl.r, 1);
    half3 rgb = hsl2rgb(hsl + _value.xyz);
    return half4(rgb, color.a); //color.a + _value.a

}

 

 

마찬가지로 이걸 스파인 URP 셰이더 폴더의

Shaders\Include\Spine-Sprite-ForwadPass-URP.hlsl 에 넣고

저번처럼 수정해서 만들어보았다.

 

부가적인 수익이 있다면

셰이더에서 step 함수를 if문 처럼 쓸 수 있겠다는 것을 익힌 정도?

 

 

https://5nani.com/xe/index.php?mid=Creative&document_srl=24144

  원래는 스파인의 Slot별 SetColor()가 유니티 기본 사양 컬러 블렌딩인 Multiply로 동작한다. 하지만 Hue-Shift 스타일 색상 변...
조루나 | 2022.03.10

 

 

 


엮인글

  • 조루나 2022.05.16 11:26

    문제사항: 기본 색상이 원본 다르게 나옴.

    계산식에 문제가 있는 듯.

  • 조루나 2022.05.16 12:10

    그것은 바로 2 / 3 을 1.5라고 쓰는 기적의 수학법으로 발생한 문제
    0.66666으로 수정.

  • 조루나 2022.05.30 16:00

    UI 스파인을 위해서

    Spine\Runtime\spine-unity-Shaders\SkeletonGraphic\CGIncludes\Spine-SkeletonGraphic-NormalPass.cginc

    도 수정.

     

    fixed4 frag (VertexOutput IN) : SV_Target
    {
        half4 texColor = tex2D(_MainTex, IN.texcoord);

        #if defined(_STRAIGHT_ALPHA_INPUT)
        texColor.rgb *= texColor.a;
        #endif

        //half4 color = (texColor + _TextureSampleAdd) * IN.color;
        half4 color = adjustHueOfColor(texColor + _TextureSampleAdd, IN.color);
        color *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
        
        clip (color.a - 0.0001); //클리핑 안 하면 알파가 흰색으로 보일 수 있음.
        //#ifdef UNITY_UI_ALPHACLIP
        //clip (color.a - 0.0001);
        //#endif

        return color;
    }

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )

  1. 스파인 텍스쳐 런타임 색칠하기

    Date2022.09.02 Category게임 By조루나 Views234
    Read More
  2. 블렌더 맛보기

    Date2022.07.21 Category비주얼 By조루나 Views288
    Read More
  3. 파티클 메쉬와 Optimize Mesh Data의 저주

    Date2022.07.14 Category게임 By조루나 Views224
    Read More
  4. 유니티 2D(2.5D) 타일 에셋 - Super Tilemap Editor

    Date2022.07.06 Category게임 By조루나 Views272
    Read More
  5. 유니티 컬러 스페이스와 스파인 HSL 색 변경의 역습

    Date2022.07.06 Category게임 By조루나 Views448
    Read More
  6. 앱 이름에 따라 프레임이 다르게 나온다...

    Date2022.06.21 Category게임 By조루나 Views219
    Read More
  7. 유니티 스파인 슬롯에 HSL 색상 변경(=포토샵 Colorize)

    Date2022.05.13 Category게임 By조루나 Views403
    Read More
  8. 크기의 1~5 나타내는 액체용기 픽토그램

    Date2022.04.07 Category비주얼 By조루나 Views216
    Read More
  9. 배경 하늘 경계선이 마음에 안 들어서 그래디언트 추가

    Date2022.03.31 Category게임 By조루나 Views247
    Read More
  10. Shader를 적용 시킨 UI에 ZWrite가 On 되어 있으면 안되나?

    Date2022.03.29 Category게임 By조루나 Views227
    Read More
  11. 유니티 Spine 셰이더 고쳐서 부위별 Hue-Shift 적용시키기

    Date2022.03.10 Category게임 By조루나 Views275
    Read More
  12. 유니티 URP에 쓸 투명 원 쇼크 웨이브

    Date2021.12.27 Category게임 By조루나 Views294
    Read More
  13. 한붓 그리기 경우의 수 계산

    Date2021.10.20 Category게임 By조루나 Views326
    Read More
  14. 터렛 관절 무-빙-

    Date2021.07.23 Category게임 By조루나 Views341
    Read More
  15. 게임에 한 붓 그리기 퍼즐을 넣고 싶다길래...

    Date2021.07.15 Category게임 By조루나 Views305
    Read More
  16. 2D 쿼터뷰 타일 게임을 3D처럼 해달라잖아!

    Date2021.05.27 Category게임 By조루나 Views386
    Read More
  17. 2D 쿼터뷰 게임의 스프라이트 Sorting Order 정렬 방법

    Date2021.04.30 Category게임 By조루나 Views415
    Read More
  18. 스크롤러 에셋과 VerticalLayoutGroup의 저주

    Date2021.03.10 Category게임 By조루나 Views365
    Read More
  19. 스프라이트 하프 밉맵

    Date2020.11.20 Category게임 By조루나 Views341
    Read More
  20. 3D 입문2. Mixamo 애니메이션으로 날로 먹기

    Date2020.11.10 Category게임 By조루나 Views381
    Read More
Board Pagination Prev 1 2 3 Next
/ 3