메뉴 건너뛰기

조회 수 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
번호 분류 제목 글쓴이 날짜 조회 수
45 게임 유니티 WebGL 빌드에서 렌더링 해상도가 너무 크게 나올때 조루나 2024.12.11 8
44 게임 유니티질 8년차에 깨달은 텍스쳐 압축과 메모리 할당 file 조루나 2024.11.09 27
43 게임 유니티 Shader Variant Loading Settings을 쓰니 메모리가 절약되네 file 조루나 2024.07.23 47
42 게임 애드몹 Code 3 no fill 에러 원인 중 한 가지 file 조루나 2024.01.16 116
41 게임 유니티 특) 9 Slice랑 Filled 동시에 안 됨. 조루나 2023.11.29 116
40 게임 메쉬로 Progress circle 그리기 file 조루나 2023.11.23 112
39 게임 우효, 이런 좋은 버그리포트 도구가 있었다니 Sentry 1 file 조루나 2023.05.08 151
38 게임 Unity 빌드 전 대화상자 출력 조루나 2023.04.20 98
37 게임 유니티 모바일에서 VideoPlayer로 영상 재생하면 자꾸 멈춘다. 조루나 2023.02.23 139
36 게임 세 가지 셀 셰이딩 에셋의 단순 프레임 비교 file 조루나 2023.02.03 144
35 게임 유니티 transform 참조의 문제 file 조루나 2022.11.10 163
34 게임 에셋 Super Tilemap Editor가 바닥면 Collider를 만들어주지 않아 file 조루나 2022.10.27 113
33 게임 미소녀 뱀파이어 서바이버즈를 만들자! - 캐릭터 몸에 마법 문신 넣기 file 조루나 2022.10.06 209
32 게임 Unity 2020에서 Spine 3.6 Runtime이 AtlasAsset을 제대로 Import하지 못 할 때 file 조루나 2022.09.20 129
31 게임 스파인 텍스쳐 런타임 색칠하기 file 조루나 2022.09.02 113
30 게임 파티클 메쉬와 Optimize Mesh Data의 저주 file 조루나 2022.07.14 111
29 게임 유니티 2D(2.5D) 타일 에셋 - Super Tilemap Editor file 조루나 2022.07.06 135
28 게임 유니티 컬러 스페이스와 스파인 HSL 색 변경의 역습 file 조루나 2022.07.06 266
27 게임 앱 이름에 따라 프레임이 다르게 나온다... file 조루나 2022.06.21 119
» 게임 유니티 스파인 슬롯에 HSL 색상 변경(=포토샵 Colorize) HSV 변경 기능을 만들었더니 리얼화이트를 만들 수 없어서 다시 만들어야했다. 그래서 찾아보니 HSV 말고도 HSL 이란 것도 있었다. 문제는 스파인이 Color32로 Se... 3 file 조루나 2022.05.13 276
Board Pagination Prev 1 2 3 Next
/ 3