메뉴 건너뛰기

조회 수 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개 첨부 됨 ( / )

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
» 게임 유니티 스파인 슬롯에 HSL 색상 변경(=포토샵 Colorize) HSV 변경 기능을 만들었더니 리얼화이트를 만들 수 없어서 다시 만들어야했다. 그래서 찾아보니 HSV 말고도 HSL 이란 것도 있었다. 문제는 스파인이 Color32로 Se... 3 file 조루나 2022.05.13 403
25 게임 배경 하늘 경계선이 마음에 안 들어서 그래디언트 추가 file 조루나 2022.03.31 247
24 게임 Shader를 적용 시킨 UI에 ZWrite가 On 되어 있으면 안되나? file 조루나 2022.03.29 227
23 게임 유니티 Spine 셰이더 고쳐서 부위별 Hue-Shift 적용시키기 file 조루나 2022.03.10 275
22 게임 유니티 URP에 쓸 투명 원 쇼크 웨이브 file 조루나 2021.12.27 292
21 게임 한붓 그리기 경우의 수 계산 file 조루나 2021.10.20 326
20 게임 터렛 관절 무-빙- file 조루나 2021.07.23 341
19 게임 게임에 한 붓 그리기 퍼즐을 넣고 싶다길래... file 조루나 2021.07.15 305
18 게임 2D 쿼터뷰 타일 게임을 3D처럼 해달라잖아! file 조루나 2021.05.27 386
17 게임 2D 쿼터뷰 게임의 스프라이트 Sorting Order 정렬 방법 file 조루나 2021.04.30 415
16 게임 스크롤러 에셋과 VerticalLayoutGroup의 저주 file 조루나 2021.03.10 365
15 게임 스프라이트 하프 밉맵 file 조루나 2020.11.20 341
14 게임 3D 입문2. Mixamo 애니메이션으로 날로 먹기 1 file 조루나 2020.11.10 381
13 게임 3D 입문. Vroid Studio로 날먹 해보기. file 조루나 2020.11.09 465
12 게임 총알 방패막 + 회전회오리슛 1 file 조루나 2020.10.27 405
11 게임 엔터 더 건전 따라서 UI에 현재 무기 그림이 나오게 해달라기에. 1 file 조루나 2020.10.16 428
10 게임 버프버프 2 file 조루나 2020.09.22 365
9 게임 수동 밉맵(mipmap) 3 file 조루나 2020.09.11 466
8 게임 2D 게임이라도 팝콘이 튀기고 싶어 file 조루나 2020.09.09 378
7 게임 뭐! 지도에 캐릭터 위치를 보여달라고! 1 file 조루나 2020.08.20 457
Board Pagination Prev 1 2 3 Next
/ 3