분류 전체보기

    [Unity] 커스텀 셰이더 UnityCG.cginc 헤더 파일 못찾는 이유

    개념Built-in 즉 내장된 렌더링 파이프라인이라 신규 렌더링 파이프라인인 URP랑은 별개임 따라서 URP 환경에서 Built-in 셰이더 사용 시 마젠타로 변함.URP는 주된 파일들이 필수다 HLSLSupport.hlsl, CoreRP.hlsl 그리고 Lighting.hlsl주요 컴포넌트들도 명칭도 구현 방법도 다르다.주요 차이점CGPROGRAM 대신 HLSLPROGRAM 사용함셰이더 변수들 fixed4는 half4로 대체됨Built-in 기본 함수들은 URP에서도 기능이 같은게 존재함, 예로) UnityObjectToClipPos()를 TransformObjectToClip()URP는 SRP Batcher 내에 있는 CBUFFER 구조를 따름 TEXTURE2D와 SAMPLER 메크로를 사용함코드 (..

    [Unity] fps 로그창 GUI

    OnGUI에서 매 프레임마다 띄워준다Application.targetFrameRate 로 현재 목표 fps를 불러오거나 지정할 수 있다public class FPSDisplay : MonoBehaviour{ public bool toggle = false; private GUIStyle style; private Rect rect; private float deltaTime = 0.0f; const float updateInterval = 0.5f; private int frames = 0; private float fps = 0.0f; private float timeLeft; private int curFrame; void Awake() { ..

    [C#] JSON 직렬화 (Serialization) 정리

    JSONJavascript Object Notation은 데이터를 저장하고 전송하기 위한 경량 데이터 형식, 주로 클라이언트 간 데이터 교환에 사용된다. 예){ "name": "홍길동", "age": 28, "skills": ["Java", "Spring", "MyBatis"], "isEmployed": true}직렬화메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것이다.역직렬화(deserialization)는 그 반대로 디스크에 저장한 데이터를 읽거나, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 다시 변환하는 것이다.왜 필요한가?개발 언어로 무엇을 사용하던(C++, C, C#, Java 등,,) 사용하는 데이터들의 메모리 구조는 크게 2가지로 나뉜다. ..

    [Unity] ServiceLocatorManager > 구조 변경 / indexer, Type

    일단은 서비스 딕셔너리를 생성해준 후 indexer로 Type 값을 반환한다여기서 instance는 싱글톤 객체를 의미한다private Dictionary _services = new Dictionary();public object this[Type type]{ get { if (_services.TryGetValue(type, out object service)) return service; Debug.LogWarning($"Service of type {type.Name} not found!"); return null; } set { if (_services.ContainsKey(type))..

    [Unity] 애니메이션 마지막 프레임에서 이벤트 호출안되는 이유

    일단 코드는 아래와 같다using System;using UnityEngine;public class PlayerAnimEvent : MonoBehaviour{ public PlayerController playerController; public bool isDashEnded; void AttackEnd() => playerController.input.AttackEnd(); void DashStart() => isDashEnded = false; void DashEnd() => isDashEnded = true;}여기서 DashStart랑 DashEnd 함수를 사용할텐데 발생하는 문제점이 DashEnd 이벤트가 호출 안된다는건데 이유는 애니메이션이 종료..

    [네트워크] TCP vs UDP / 가상회선, 데이터그램 패킷 교환 방식

    TCP & UDPTCP/IP 4계층 중 전송계층에 해당하며 애플리케이션과 인터넷 계층 사이의 데이터 전달 시 중계 역할을 한다1. TCP (Transmission Control Protocol)신뢰성 있는 연결형 서비스 제공흐름 제어, 오류 제어, 순서 제어정해진 시간 안의 대량 데이터를 연속으로 보낼 때 적합함가상회선 패킷 교환 방식 사용3-way-handshake (연결 성립), 4-way-handshake(연결 해제)핸드 쉐이크) 상대와 연결 상태를 만들거나 해제하기 위해 거치는 과정3-way-handshake (3-웨이-핸드쉐이크)TCP/IP 프로토콜을 이용하여 통신하는 응용 프로그램이 데이터 전송 전 정확한 전송 보장을 위해 상대 컴퓨터와 사전에 세션을 수립하는 과정신뢰성 확보무의미한 데이터 전..

    [Unity] 로그 (Log) 출력시 스택 트레이스 (Stack Trace) 관리하기

    로그 (Log)는 개발자들에게 없어서는 안될 중요한 개발자는 로그를 통해서 코드가 제대로 동작하는지, 데이터 값들이 정상인지 등을 확인할 수 있다. 만약 로그가 없다면, 개발자는 버그를 찾아내는데 더 많은 고생을 하게 될 것이다.유니티에서는 이러한 로그를 출력할 때, 위의 이미지처럼 개발자가 출력하고자하는 로그의 내용과 함께 로그가 출력된 코드의 위치를 알려주는 스택 트레이스 역시 함께 보여준다. 로그를 출력하도록 설정해놓았다면 빌드한 어플이케이션에서도 로그가 찍힐 때 스택 트레이스 역시 함께 출력되도록 되어있다. 위의 이미지는 간단한 테스트 코드이기 때문에 스택 트레이스가 3줄 밖에 안되지만 본격적으로 개발에 들어간 이후에는 스택 트레이스가 기본적으로 4-5줄에서 많은 10여줄을 넘는 경우가 자주 ..

    디스크 스케줄링의 개념과 종류 (FCFS, SSTF, SCAN, C-SCAN, C-LOOK)

    디스크 관리 (Disk Management)디스크는 가장 많이 사용하는 보조기억장치 중 하나로 마치 레코드판을 여러 개 중첩해서 놓은 것과 비슷하다. 디스크는 헤드 (Head)가 임의의 섹터 (Sector)를 랜덤하게 참조할 수 있고 빠르게 데이터를 읽을 수 있으며, 주기억장치보다 많은 양의 데이터를 저장할 수 있다.디스크 접근 시간탐색시간 (Seek time): 현 위치에서 특정 실린더(트랙)로 디스크 헤드가 이동하는 데 소요되는 시간회전 지연시간 (Rotation delay time): 가고자 하는 섹터가 디스크 헤드까지 도달하는데 걸리는 시간전송시간 (Transfer time): 데이터를 전송하는데 걸리는 시간종류1. FCFS (First Come First Served)가장 먼저 도착한 요청을 우..

    Rider C++ 버전 업그레이드 하는 방법

    아래와 같이 버전이 안맞는다는 에러가 뜬다면 프로젝트 선택 후 우클릭 또는 alt + enterC++ 언어 표준 바꿔주면 된다

    [SQL] TO_CHAR 함수 사용법 (날짜 포맷, 소수점, 천단위 콤마)

    날짜 포맷 변경 (YYYY-MM-DD) YYYY: 년, MM: 월, DD: 일, HH24: 24시간, HH: 12시간, MI: 분, SS:초SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') --20200723 , TO_CHAR(SYSDATE, 'YYYY/MM/DD') --2020/07/23 , TO_CHAR(SYSDATE, 'YYYY-MM-DD') --2020-07-23 , TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') --2020-07-23 11:10:52 FROM dual 소수점 변경 FM: 문자열의 공백제거숫자의 최대 길이만큰 9999... 형식을 지정한다. (9 : 값..