메뉴 건너뛰기

조회 수 276 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
33 비주얼 블렌더 맛보기 1 file 조루나 2022.07.21 158
32 게임 파티클 메쉬와 Optimize Mesh Data의 저주 file 조루나 2022.07.14 111
31 게임 유니티 2D(2.5D) 타일 에셋 - Super Tilemap Editor file 조루나 2022.07.06 135
30 게임 유니티 컬러 스페이스와 스파인 HSL 색 변경의 역습 file 조루나 2022.07.06 266
29 게임 앱 이름에 따라 프레임이 다르게 나온다... file 조루나 2022.06.21 119
» 게임 유니티 스파인 슬롯에 HSL 색상 변경(=포토샵 Colorize) HSV 변경 기능을 만들었더니 리얼화이트를 만들 수 없어서 다시 만들어야했다. 그래서 찾아보니 HSV 말고도 HSL 이란 것도 있었다. 문제는 스파인이 Color32로 Se... 3 file 조루나 2022.05.13 276
27 비주얼 크기의 1~5 나타내는 액체용기 픽토그램 file 조루나 2022.04.07 119
26 게임 배경 하늘 경계선이 마음에 안 들어서 그래디언트 추가 file 조루나 2022.03.31 121
25 게임 Shader를 적용 시킨 UI에 ZWrite가 On 되어 있으면 안되나? file 조루나 2022.03.29 126
24 게임 유니티 Spine 셰이더 고쳐서 부위별 Hue-Shift 적용시키기 file 조루나 2022.03.10 165
23 게임 유니티 URP에 쓸 투명 원 쇼크 웨이브 file 조루나 2021.12.27 182
22 게임 한붓 그리기 경우의 수 계산 file 조루나 2021.10.20 209
21 게임 터렛 관절 무-빙- file 조루나 2021.07.23 233
20 게임 게임에 한 붓 그리기 퍼즐을 넣고 싶다길래... file 조루나 2021.07.15 201
19 게임 2D 쿼터뷰 타일 게임을 3D처럼 해달라잖아! file 조루나 2021.05.27 262
18 게임 2D 쿼터뷰 게임의 스프라이트 Sorting Order 정렬 방법 file 조루나 2021.04.30 287
17 게임 스크롤러 에셋과 VerticalLayoutGroup의 저주 file 조루나 2021.03.10 250
16 게임 스프라이트 하프 밉맵 file 조루나 2020.11.20 201
15 게임 3D 입문2. Mixamo 애니메이션으로 날로 먹기 1 file 조루나 2020.11.10 258
14 게임 3D 입문. Vroid Studio로 날먹 해보기. file 조루나 2020.11.09 321
Board Pagination Prev 1 2 3 Next
/ 3