본문 바로가기

분류 전체보기119

Liquid Glass GLSL 셰이더 코드 상세 분석표1. Uniform 변수 (입력 파라미터)변수명타입설명사용 목적값 범위backgroundshader배경 이미지 텍스처굴절된 배경 샘플링텍스처 객체resolutionfloat2화면 해상도 (width, height)좌표 정규화(0, 0) ~ (화면크기)mousePosfloat2마우스/터치 위치오른쪽 유리 위치 제어(0, 0) ~ resolutionisTouchingfloat터치 상태유리 위치 모드 전환0.0 (미터치) / 1.0 (터치)2. SDF (Signed Distance Function) 함수들sdSuperellipse - 슈퍼타원 SDF파라미터타입설명계산 과정pfloat2현재 픽셀 위치입력 좌표rfloat반지름슈퍼타원 크기nfloat모서리 둥글기4.0 = 원형, 높.. 2025. 6. 16.
2.7 SkSurface SkSurface는 렌더 타겟이다.렌더 타겟에 렌더링을 하고 이미지로 가져오는 방식을 알아보자. CPU 기반 캔버스 다음 예제는 CPU기반 SkSurface를 생성하여 이미지로 전환 후 캔버스를 통해 렌더링하는 예제이다. SkCanvas를 생성하는 함수는 SkSurfaces::Raster() 이다.CPU Ram을 사용하여 만든 서피스 이며, GPU 없이 이미지 버퍼를 만들고 그 위에 그림을 그릴 수 있다.파라메터로 SkImageInfo를 사용하며, 예제에서는 프리멀티플 64, 64 크기의 서피스를 생성한다.SkSurface의 makeSurface 함수를 사용하면,동일한 ImageInfo를 사용하되, 속성 값은 다르게 사용 할 수 있으며, 내부 픽셀값은 공유 하지 않는다. SkPixmap이 등장하는데, S.. 2025. 5. 19.
2.6 Canvas CheckerBoard // 체커보드 패턴을 그리는 함수void checkerboard(SkCanvas* canvas) { SkColor color1 = SK_ColorLTGRAY; // 배경 색상 (밝은 회색) SkColor color2 = SK_ColorCYAN; // 패턴 색상 (청록색) SkScalar scale = 10.0f; // 타일 하나의 기본 크기 SkPath path; path.addRect(0, 0, scale, scale); // 패턴으로 사용할 사각형 경로 추가 (10x10) // 매트릭스를 생성해 사각형 패턴을 복제할 방법 정의 SkMatrix matrix = SkMatrix::Scale(2 * scale, scale); // 가로로 2배,.. 2025. 5. 13.
2.5 Canvas read&write Pixels, saveLayer ReadPixelsvoid draw(SkCanvas* canvas) { // 캔버스를 파란색으로 클리어 canvas->clear(SK_ColorBLUE); SkPaint paint; // 중심 (32,32), 반지름 28짜리 원을 그림 (기본색 = 검정) canvas->drawCircle(32, 32, 28, paint); // 64x64 크기, BGRA8888 포맷, Premultiplied 알파의 이미지 정보 생성 SkImageInfo info = SkImageInfo::Make(64, 64, kBGRA_8888_SkColorType, kPremul_SkAlphaType); // info에 맞는 크기의 메모리 할당 (64x64x4 = 16384바이트) .. 2025. 5. 9.