메뉴 건너뛰기

조회 수 170 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
47 그외 게임 메이커 스튜디오 C# dll 라이브러리 만들 때 .NET 프레임워크 버전 문제 file 조루나 2024.05.03 3
46 게임 애드몹 Code 3 no fill 에러 원인 중 한 가지 file 조루나 2024.01.16 18
45 게임 유니티 특) 9 Slice랑 Filled 동시에 안 됨. 조루나 2023.11.29 10
44 게임 메쉬로 Progress circle 그리기 file 조루나 2023.11.23 10
43 그외 남이 만든 게 안 돌아가서 뜯어고친 C# 셀레니움 크롬 드라이버 자동 업데이트 조루나 2023.11.23 10
42 게임 우효, 이런 좋은 버그리포트 도구가 있었다니 Sentry 1 file 조루나 2023.05.08 43
41 게임 Unity 빌드 전 대화상자 출력 조루나 2023.04.20 10
40 게임 유니티 모바일에서 VideoPlayer로 영상 재생하면 자꾸 멈춘다. 조루나 2023.02.23 33
39 게임 세 가지 셀 셰이딩 에셋의 단순 프레임 비교 file 조루나 2023.02.03 43
38 게임 유니티 transform 참조의 문제 file 조루나 2022.11.10 63
37 게임 에셋 Super Tilemap Editor가 바닥면 Collider를 만들어주지 않아 file 조루나 2022.10.27 10
36 게임 미소녀 뱀파이어 서바이버즈를 만들자! - 캐릭터 몸에 마법 문신 넣기 file 조루나 2022.10.06 98
35 게임 Unity 2020에서 Spine 3.6 Runtime이 AtlasAsset을 제대로 Import하지 못 할 때 file 조루나 2022.09.20 19
34 게임 스파인 텍스쳐 런타임 색칠하기 file 조루나 2022.09.02 25
33 비주얼 블렌더 맛보기 1 file 조루나 2022.07.21 70
32 게임 파티클 메쉬와 Optimize Mesh Data의 저주 file 조루나 2022.07.14 20
31 게임 유니티 2D(2.5D) 타일 에셋 - Super Tilemap Editor file 조루나 2022.07.06 25
30 게임 유니티 컬러 스페이스와 스파인 HSL 색 변경의 역습 file 조루나 2022.07.06 126
29 게임 앱 이름에 따라 프레임이 다르게 나온다... file 조루나 2022.06.21 15
» 게임 유니티 스파인 슬롯에 HSL 색상 변경(=포토샵 Colorize) HSV 변경 기능을 만들었더니 리얼화이트를 만들 수 없어서 다시 만들어야했다. 그래서 찾아보니 HSV 말고도 HSL 이란 것도 있었다. 문제는 스파인이 Color32로 Se... 3 file 조루나 2022.05.13 170
Board Pagination Prev 1 2 3 Next
/ 3