Shader
·
💻 CS/용어
ShaderGPU(Graphics Processing Unit)에서 실행되는 프로그램으로 그래픽 렌더링 과정에서 다양한 시각적 효과를 생성하거나 데이터를 처리할 때 사용. 일반적으로 3D 그래픽스 API(ex: OpenGL, DirectX, Metal)에서 사용되며, GPU를 활용하여 고속으로 그래픽 연산을 수행. Shader의 역할1. 3D 모델의 변환객체를 화면에 그리지 위해 위치, 크기, 회전 등을 조정.모델 좌표에서 화면 좌표로 변환.2. 조명 및 색상 계산물체에 빛이 어떻게 반사되고 흡수되는지 계산하여 현실감 있는 이미지 생성.ex) 빛, 그림자, 반사3. 픽셀 색상 정의텍스처나 색상을 적용해 각 픽셀의 최종 색상을 결정.그림자, 투명도, 반사 등 시각적 효과를 추가.4. 포스트 프로세싱렌더링된..
SwiftUI에서 Metal 사용해보기
·
🍎 iOS
Metal 관련 용어MTKViewMetalKit에서 제공하는 뷰로 Metal을 사용하는 그래픽 컨텐츠를 그리는 데 사용. GPU와의 상호작용 관리MTLDeviceGPU를 나타내는 객체로, Metal에서 그래픽 작업을 수행하는 데 필요한 다양한 리소스 생성 가능MTLCommandQueueGPU에 연산을 요청하기 위해 명령을 큐에 추가하는 객체. 그래픽 경로에서 수행할 작업을 순차적으로 처리.MTLRenderPipelineState렌더링 파이프라인의 상태. 셰이더 프로그램과 렌더링 특성을 포함함. 그래픽 데이터를 어떻게 처리할지 정의.MTLBufferGPU와 CPU 간의 데이터 전송을 위한 메모리 블록.Shader그래픽 렌더링의 특정 단계를 처리하는 프로그램. 정점 셰이더와 프래그먼트 셰이더가 있다. Vie..
ARKit과 Metal
·
🍎 iOS
ARKit카메라, 센서, 프로세서를 활용하여 가상 객체를 실제 환경에 겹쳐보이게 하고 상호작용할 수 있는 기능을 제공하는 프레임워크 Metal고성능 그래픽 및 GPU 가속을 활용할 수 있게 해주는 저수준 그래픽 API OpenGL, OpenCL보다 더 효율적이고, 하드웨어에 가까운 수준에서 그래픽과 계산작업을 처리할 수 있다.게임, 3D 렌더링, 머신러닝, 이미지 및 비디오 처리 등 다양한 고성능 작업을 처리할 수 있다.
[DICOM-2] DICOM 파일 구조
·
💻 CS
DICOM 파일의 기본 구조1. PreambleDICOM 파일의 처음에 위치한 128바이트 공간 다른 프로그램과의 호환성을 위해 포함된다. 2. Prefix"DICM"이라는 문자열이 포함되어 있어 DICOM파일임을 명시하는 4바이트 공간 3. File Meta Information파일 메타데이터의 정보를 포함. Transfer Syntax, SOP Class UID, SOP Instance UID 등 파일의 처리를 위한 중요정보를 담고 있다. DICOM Data Set의 시작을 알리는 부분이다. 4. Data Set Tag와 Value로 이루어진 Data Element들의 집합TagDICOM 데이터의 필드를 나타내는 고유식별자. (Group, Element) 형식으로 표시된다. ex) (0010, 001..
[DICOM-1] DICOM이란?
·
💻 CS
DICOM(Digital Imaging and Communications in Medicine)의 정의스캐너, 워크스테이션, 서버와 같은 기기 간에 의료 영상과 해당 영상의 메타데이터가 저장 및 전송되는 방법을 설명하는 표준 의료 영상 데이터를 다루는 병원과 개발자에게 DICOM은 필수적인 표준이다. DICOM은 의료용 영상 데이터를 효과적으로 저장, 전송, 관리하기 위한 약속이다.DICOM은 여러 의료 영상 모달리티에서 데이터를 저장하여 진단 연구의 상세한 설명자료를 만드는 데 사용할 수 있다.이러한 모달리티는 CT, PET, MRI, X선 초음파와 방사선 영상 모달리티가 포함된다. DICOM을 사용할 때의 장점- DICOM은 의료계에서 영상 저장에 가장 흔히 사용되는 표준이다.- DICOM을 사용하면..
접근제어자
·
🍎 iOS/Swift
open모듈 외부에서 접근 가능, 상속 및 오버라이딩 허용프레임워크 일부를 사용자에게 공개할때 사용 public모듈 외부에서 접근 가능, 상속과 오버라이딩 제한주로 라이브러리나 프레임워크의 일부 기능을 공개할 때 사용 internal모듈 내에서만 접근 가능, 앱의 대부분의 코드에서 기본적으로 사용 fileprivate같은 파일 내에서만 접근 가능, 파일 단위로 캡슐화를 적용하고자 할 때 유용 private해당 선언이 포함된 스코프(클래스, 구조체 등) 내에서만 접근 가능가장 강력한 제한으로 민감한 데이터나 내부 구현사항을 보호할 때 사용
Lazy와 weak을 함께 사용할 수 없는 이유
·
🍎 iOS/Swift
Lazy 속성의 특징 lazy 속성은 처음으로 접근할 때 초기화된다.객체가 생성된 이후에 값을 설정할 수 있어, 초기화 시점에서 특정 값이 준비되지 않은 경우에 유용하다.lazy 속성은 인스턴스가 메모리에 확실히 존재하는 동안 유지되며, 그 인스턴스가 필요할 때 메모리에서 초기화된다. Weak 속성의 특징weak 속성은 약한 참조를 가리킨다.약한 참조는 메모리 순환 참조를 피하기 위해 사용되며, 참조하는 객체가 메모리에서 해제되면 nil로 설정된다.약한 참조는 항상 Optional 타입이어야 하며, 가리키는 객체의 수명이 다하면 자동으로 해제된다. 호환되지 않는 이유lazy 속성은 초기화 시점을 보장해야 하는데, weak 속성은 언제든지 nil이 될 수 있는 특성을 갖고 있다.따라서 참조를 지속할 수 없..
UI를 메인스레드에서 구현해야하는 이유
·
🍎 iOS/Swift
UI는 왜 메인스레드에서 구현해야할까? UIKit의 메인 스레드 설계 원칙UIKit은 UI작업을 메인 스레드에서 수행하도록 설계되어있다.이것을 따르지 않으면 UI가 비동기적으로 백그라운드 스레드에서 업데이트 되며, 예상치 못한 충돌이나 렌더링에 실패할 수 있다. 스레드 안정성UIKit의 구성 요소는 대부분 Thread-safe하게 설계되지 않았다.여러 스레드에서 UI를 동시에 수정하려고하면 Race condition이나 불안정성이 발생하여 앱이 불규칙하게 작동할 수 있다.메인 스레드를 사용함으로써 이런 충돌을 예방할 수있다. Race Condition?2개 이상의 스레드나 프로세스가 공유자원에 동시에 접근하고 수정할 때 발생하는 문제예) 은행 거래 시스템에서 여러 사용자가 동시에 같은 계좌에서 돈을 인출..
matchedGeometryEffect(Hero animation)
·
🍎 iOS/SwiftUI
matchedGeometryEffect식별자와 네임스페이스를 제공하여 기하학이 동기화된 뷰 그룹을 정의. 이 modifier를 여러 뷰에 부착하면 SwiftUI가 뷰 간의 연결을 이해하고, 자동으로 Transition을 적용할 수 있게 된다. 1. 기본 구조설정@Namespace var animation SwiftUI에서 Hero 애니메이션을 구현하기 위해 먼저 네임스페이스를 정의한다.2. 뷰에 modifier 붙이기VStack { if shouldAnimate { Rectangle () .matchedGeometryEffect(id: "shape" , in: animation) } else { Rectangle () .matc..
matchedGeometryEffect
·
🍎 iOS/SwiftUI
matchedGeometryEffect식별자와 네임스페이스를 제공하여 기하학이 동기화된 뷰 그룹을 정의. 이 modifier를 여러 뷰에 부착하면 SwiftUI가 뷰 간의 연결을 이해하고, 자동으로 Transition을 적용할 수 있게 된다. 1. 기본 구조설정@Namespace var namespace SwiftUI에서 Hero 애니메이션을 구현하기 위해 먼저 네임스페이스를 정의한다.
JerryiOS
'분류 전체보기' 카테고리의 글 목록