Liquid Glass
타원을 만드는 코드a : x축 반지름, b : y축 반지름n > 2 면 사각형에 가까워지고, n float sdSuperellipse(float2 p, float r, float n) { p = abs(p / r); float m = pow(p.x, n) + pow(p.y, n); return (pow(m, 1.0 / n) - 1.0) * r;}리턴값의 의미- 리턴값이 0이면 경계, 리턴값이 음수면 원안쪽, 양수면 원 바깥쪽. float w1 = exp(-dg1 * dg1 * 8.0);float w2 = exp(-dg2 * dg2 * 8.0);float totalWeight = w1 + w2 + 1e-6;dg1 원내부는 음수, 원 밖은 양수, 경계는 0이다.-1을 한쪽에 곱해주면 ..
2025. 6. 16.
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.