전체 글
"우린 역사를 살아가고, 우리의 삶은 역사가 되어간다" 라는 말을 좋아한다.
-
3차원 RGB UV
[Unityy URP Shader] 축 정보3차원 RGB UV
2024.04.19 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d struct VertexInput { float4 vertex : POSITION; float3 normal : NORMAL; }; struct VertexOutput { float4 vertex : SV_POSITION; float3 normal : NORMAL; //Vector 대신 사용 가능한 예약어 float3 WorldSpaceViewDirection : TEXCOORD0; }; float _RimPower, _RimInten; half4 _RimColor; VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex..
[Unity URP Shader]Rim 오브젝트 강조[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d struct VertexInput { float4 vertex : POSITION; float3 normal : NORMAL; }; struct VertexOutput { float4 vertex : SV_POSITION; float3 normal : NORMAL; //Vector 대신 사용 가능한 예약어 float3 WorldSpaceViewDirection : TEXCOORD0; }; float _RimPower, _RimInten; half4 _RimColor; VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex..
2024.04.17 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties { _RampTex("RampTexture", 2D) = "White"{} _TintColor("Color", color) = (1,1,1,1) _Intensity("Intensity", Range(0,1)) = 0.5 _AmbientColor("AmbientColor", color) = (1,1,1,1) _lightwidth("LightWidth" , Range(0.1, 10)) = 0.5 _lightStep("LightStep" , Float) = 0.5 } ....[생략] float4 _TintColor; float _Intensity; float..
[Unity URP Shader] 툰 라이팅 기본[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties { _RampTex("RampTexture", 2D) = "White"{} _TintColor("Color", color) = (1,1,1,1) _Intensity("Intensity", Range(0,1)) = 0.5 _AmbientColor("AmbientColor", color) = (1,1,1,1) _lightwidth("LightWidth" , Range(0.1, 10)) = 0.5 _lightStep("LightStep" , Float) = 0.5 } ....[생략] float4 _TintColor; float _Intensity; float..
2024.04.17 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d VertexOutput vert(VertexInput v) { VertexOutput o; float4 positionWS = TransformObjectToHClip(v.vertex.xyz); o.normal = TransformObjectToWorldNormal(v.normal); o.vertex = positionWS; return o; } half4 frag(VertexOutput i) : SV_Target { //light //유니티 라이트를 무조건 한 방향에서만 빛이 온다는 것이 전제 //라이트의 노말위치를 반환해준다고 생각하면 좋을듯 /*float3 light..
[Unity URP Shader] Direction Light[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d VertexOutput vert(VertexInput v) { VertexOutput o; float4 positionWS = TransformObjectToHClip(v.vertex.xyz); o.normal = TransformObjectToWorldNormal(v.normal); o.vertex = positionWS; return o; } half4 frag(VertexOutput i) : SV_Target { //light //유니티 라이트를 무조건 한 방향에서만 빛이 온다는 것이 전제 //라이트의 노말위치를 반환해준다고 생각하면 좋을듯 /*float3 light..
2024.04.17 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties{ ,...[생략] //NoScaleOffset : tile과 offset을 숨기는 명령 [NoScaleOffset] _Flowmap("Flowmap", 2D) = "white" {} } ....[생략] sampler2D _Flowmap; VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.vertex.xyz); o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw; //[노이즈 발생] half4 noise = tex2..
[Unity URP Shader] 웨이브[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties{ ,...[생략] //NoScaleOffset : tile과 offset을 숨기는 명령 [NoScaleOffset] _Flowmap("Flowmap", 2D) = "white" {} } ....[생략] sampler2D _Flowmap; VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.vertex.xyz); o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw; //[노이즈 발생] half4 noise = tex2..
2024.04.17 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties{ .......[생략] //NoScaleOffset : tile과 offset을 숨기는 명령 [NoScaleOffset] _Flowmap("Flowmap", 2D) = "white" {} //흐르는 시간 배수와, 강도 _FlowIntensity("flow Intensity", Range(0,1)) = 1 _FlowTime("flow time", Range(0,10)) = 1 } ......[생략] VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.v..
[Unity URP Shader] 플로우맵을 이용한 애니메이션[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d Properties{ .......[생략] //NoScaleOffset : tile과 offset을 숨기는 명령 [NoScaleOffset] _Flowmap("Flowmap", 2D) = "white" {} //흐르는 시간 배수와, 강도 _FlowIntensity("flow Intensity", Range(0,1)) = 1 _FlowTime("flow time", Range(0,10)) = 1 } ......[생략] VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.v..
2024.04.17 -
[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.vertex.xyz); o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw; o.uv2 = v.uv.xy * _MainTex02_ST.xy + _MainTex02_ST.zw; return o; } half4 frag(VertexOutput i) : SV_Target { //텍스쳐 uv에 따른 맞추는 과정 float4 tex01 = _MainTex.Sample(sampler_MainTe..
[Unity URP Shader] 텍스쳐 섞기[출처] Unty Shader Training https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d VertexOutput vert(VertexInput v) { VertexOutput o; o.vertex = TransformObjectToHClip(v.vertex.xyz); o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw; o.uv2 = v.uv.xy * _MainTex02_ST.xy + _MainTex02_ST.zw; return o; } half4 frag(VertexOutput i) : SV_Target { //텍스쳐 uv에 따른 맞추는 과정 float4 tex01 = _MainTex.Sample(sampler_MainTe..
2024.04.17 -
투명 오브젝트에 관한 현상 조건 1 : 왼쪽 오브젝트가 오른쪽 오브젝트보다 앞에 있는 경우 왼쪽 오브젝트가 오른쪽 오브젝트에 일부 가려진 모습 조건 2 : 오른쪽 오브젝트가 왼쪽오브젝트보다 앞에 있는 경우 오른쪽 오브젝트가 왼쪽 오브젝트에 일부 가려진 경우 문제 : Transparent 쉐이더임에도 불구하고, 오브젝트의 순서에 따라 그리는 것이 달라짐 그리는 순서는 Depth Buffer에 저장된 오브젝트 피봇 기준으로 정해지는 것인데, 이 순서에 따라서 마지막 alpha blend 과정에서 뒤에 먼저 그려진 오브젝트에 가려지는 픽셀은 탈락이 되어버리는 것임. 해결 : 1. z_Test를 off 해서 무조건적으로 그려지게 만들기 -문제점 : 이 오브젝트는 어떠한 오브젝트에 가려지든 그려진다. 2. Z-W..
[Unity Shader URP] 투명오브젝트 정렬 문제투명 오브젝트에 관한 현상 조건 1 : 왼쪽 오브젝트가 오른쪽 오브젝트보다 앞에 있는 경우 왼쪽 오브젝트가 오른쪽 오브젝트에 일부 가려진 모습 조건 2 : 오른쪽 오브젝트가 왼쪽오브젝트보다 앞에 있는 경우 오른쪽 오브젝트가 왼쪽 오브젝트에 일부 가려진 경우 문제 : Transparent 쉐이더임에도 불구하고, 오브젝트의 순서에 따라 그리는 것이 달라짐 그리는 순서는 Depth Buffer에 저장된 오브젝트 피봇 기준으로 정해지는 것인데, 이 순서에 따라서 마지막 alpha blend 과정에서 뒤에 먼저 그려진 오브젝트에 가려지는 픽셀은 탈락이 되어버리는 것임. 해결 : 1. z_Test를 off 해서 무조건적으로 그려지게 만들기 -문제점 : 이 오브젝트는 어떠한 오브젝트에 가려지든 그려진다. 2. Z-W..
2024.04.04 -
*테스트 기기 Galaxy S8 텍스쳐 대역폭을 줄이기 위한 크기 변경 GPU가 메모리에 저장되어 있는 텍스쳐를 읽어오는데, 모바일에서는 메모리의 대역폭이 문제가 될 수 있기 때문에 사이즈를 줄이고, 압축포맷을 변경하여 전체적인 크기를 줄인다. -별로 효과가 없었다. 버텍스 수 줄이기 버텍스 수가 2M 정도 되는데 이것 때문에 GPU 병목이 발생한다는 것으로 어느정도 결론이 났음. * 아래 버텍스 Simpifier API를 활용해 병합된 메시들을 Vertex를 줄여서 생성할 것임 https://thegamedev.guru/unity-gpu-performance/unity-mesh-simplifier/ Simplify Your Life With Unity Mesh Simplifier Lose those e..
[Unity] GPU 병목 해결 버텍스 줄이기*테스트 기기 Galaxy S8 텍스쳐 대역폭을 줄이기 위한 크기 변경 GPU가 메모리에 저장되어 있는 텍스쳐를 읽어오는데, 모바일에서는 메모리의 대역폭이 문제가 될 수 있기 때문에 사이즈를 줄이고, 압축포맷을 변경하여 전체적인 크기를 줄인다. -별로 효과가 없었다. 버텍스 수 줄이기 버텍스 수가 2M 정도 되는데 이것 때문에 GPU 병목이 발생한다는 것으로 어느정도 결론이 났음. * 아래 버텍스 Simpifier API를 활용해 병합된 메시들을 Vertex를 줄여서 생성할 것임 https://thegamedev.guru/unity-gpu-performance/unity-mesh-simplifier/ Simplify Your Life With Unity Mesh Simplifier Lose those e..
2024.03.14 -
//해당하는 테이블의 언어를 얻어옵니다. public string GetLocalText(string table, string key) { string txt = ""; //모바일일 경우 해당 모바일 키가 존재하는지 판단합니다. if (!GameConfig.IsPc()) { string tmp_key = key + "_Mobile"; var collection = LocalizationSettings.StringDatabase.GetTableEntry(table,key); string entry = collection.Entry.Key; if (entry.Equals(tmp_key)) { txt = LocalizationSettings.StringDatabase.GetLocalizedString(tabl..
[Unity] Localization Key[ID] 값 비교//해당하는 테이블의 언어를 얻어옵니다. public string GetLocalText(string table, string key) { string txt = ""; //모바일일 경우 해당 모바일 키가 존재하는지 판단합니다. if (!GameConfig.IsPc()) { string tmp_key = key + "_Mobile"; var collection = LocalizationSettings.StringDatabase.GetTableEntry(table,key); string entry = collection.Entry.Key; if (entry.Equals(tmp_key)) { txt = LocalizationSettings.StringDatabase.GetLocalizedString(tabl..
2024.03.13 -
구글 플레이 플러그인을 통한 빌드에는 성공했지만, 구글 애드즈를 추가하고 빌드를 하니 "We recommend using a newer Android Gradle plugin to use compileSdk = 34" 빌드 중에 이러한 경고문이 뜨면서 빌드가 되지 않았다. [유니티 버전Gradle 버전Android Gradle 플러그인 버전 정보] 2022.3 7.2 7.1.2 2021.3 2020.3 2020.3.15f1부터 시작 6.1.1 4.0.1 2020.3부터 2020.3.14f1까지 5.6.4 4.0.1 위 버전을 보면 최대 지원되는 AGP가 7.1.2여서 생기는 문제 같은데, 이를 해결해 보려고 많은 시도를 했다. [현재 사용 버전] Editor 22.3.3f1 Google Play Game..
[Unity] AGP 호환성 문제 (We recommend using a newer Android Gradle plugin to use compileSdk = 3x)구글 플레이 플러그인을 통한 빌드에는 성공했지만, 구글 애드즈를 추가하고 빌드를 하니 "We recommend using a newer Android Gradle plugin to use compileSdk = 34" 빌드 중에 이러한 경고문이 뜨면서 빌드가 되지 않았다. [유니티 버전Gradle 버전Android Gradle 플러그인 버전 정보] 2022.3 7.2 7.1.2 2021.3 2020.3 2020.3.15f1부터 시작 6.1.1 4.0.1 2020.3부터 2020.3.14f1까지 5.6.4 4.0.1 위 버전을 보면 최대 지원되는 AGP가 7.1.2여서 생기는 문제 같은데, 이를 해결해 보려고 많은 시도를 했다. [현재 사용 버전] Editor 22.3.3f1 Google Play Game..
2024.03.08 -
해결 1 현재 레이아웃을 직접 지정 C:\Users\[사용자이름]\AppData\Roaming\Unity\Editor-5.x\Preferences\Layouts\default 위 경로에서 레이아웃 하나를 임의로 복사 D:\[유니티 프로젝트 이름]\Library 아래에 복사 이름 변경 [4 Splits] => [CurrentLayout_default] 다시 프로젝트 실행 해결 2 Artifacts 파일 삭제 [내가 썼던 방법] D:\[유니티 프로젝트 이름]\Library 해당 유니티 프로젝트 파일 내 Artifacts 삭제 후 실행 ! 데이터 로드로 인해 시간이 소요 됨.
[Unity]no valid user created or default window layout found unity해결 1 현재 레이아웃을 직접 지정 C:\Users\[사용자이름]\AppData\Roaming\Unity\Editor-5.x\Preferences\Layouts\default 위 경로에서 레이아웃 하나를 임의로 복사 D:\[유니티 프로젝트 이름]\Library 아래에 복사 이름 변경 [4 Splits] => [CurrentLayout_default] 다시 프로젝트 실행 해결 2 Artifacts 파일 삭제 [내가 썼던 방법] D:\[유니티 프로젝트 이름]\Library 해당 유니티 프로젝트 파일 내 Artifacts 삭제 후 실행 ! 데이터 로드로 인해 시간이 소요 됨.
2024.03.08 -
UML[Unified Modeling Language] 시스템 설계를 시각화하는 표준 방법 클래스 다이어 그램 객체 지향 모델링에서 클래스의 속성 및 연산과 클래스간의 정적인 관계를 표현 순환, 의존이 발생하는 문제점을 파악하기 용이 클래스 : 공통 속성, 연산, 관계, 의미를 공유하는 객체들의 집합 관계 표현 연관 Association 클래스가 서로 개념적으로 연결된 선 2개 이상의 사물이 서로 관련되어 있는 상태 방향성은 화살표로 표시하며, 서로에게 영향이 있는 양방향 관계의 경우 실선으로 표현 1 한 객체와 연관 0..1 0개에서 1개까지 연관됨 0..* 0개 또는 무한한 객체와 연관[0 생략가능] 1..2,4 1개에서 2개 또는 4개까지 연관 의존 Dependency 하나의 클래스가 다른 클래스를..
클래스 다이어 그램 [UML : Class Diagram]UML[Unified Modeling Language] 시스템 설계를 시각화하는 표준 방법 클래스 다이어 그램 객체 지향 모델링에서 클래스의 속성 및 연산과 클래스간의 정적인 관계를 표현 순환, 의존이 발생하는 문제점을 파악하기 용이 클래스 : 공통 속성, 연산, 관계, 의미를 공유하는 객체들의 집합 관계 표현 연관 Association 클래스가 서로 개념적으로 연결된 선 2개 이상의 사물이 서로 관련되어 있는 상태 방향성은 화살표로 표시하며, 서로에게 영향이 있는 양방향 관계의 경우 실선으로 표현 1 한 객체와 연관 0..1 0개에서 1개까지 연관됨 0..* 0개 또는 무한한 객체와 연관[0 생략가능] 1..2,4 1개에서 2개 또는 4개까지 연관 의존 Dependency 하나의 클래스가 다른 클래스를..
2024.03.07 -
GPU BOUNDING Gfx.WaitForGfxCommandsFromMainThread 5.65ms Current frame accumulated time: 20.26ms for 7 instances on thread 'Render Thread' Renderer 쓰레드가 Main 쓰레드로부터 명령을 기다리는 상태. Gfx.WaitForGfxCommandsFromMainThread로 표시 CPU BOUNDING Gfx.WaitForPresent로 표시되는 것은 GPU의 작업을 CPU가 대기하는 상태 프로파일 참고 자료 https://docs.unity3d.com/Manual/ProfilerCPU.html?_ga=2.220424856.1601725645.1572714311-568231304.1557771162
[유니티] 병목[Bottleneck]GPU BOUNDING Gfx.WaitForGfxCommandsFromMainThread 5.65ms Current frame accumulated time: 20.26ms for 7 instances on thread 'Render Thread' Renderer 쓰레드가 Main 쓰레드로부터 명령을 기다리는 상태. Gfx.WaitForGfxCommandsFromMainThread로 표시 CPU BOUNDING Gfx.WaitForPresent로 표시되는 것은 GPU의 작업을 CPU가 대기하는 상태 프로파일 참고 자료 https://docs.unity3d.com/Manual/ProfilerCPU.html?_ga=2.220424856.1601725645.1572714311-568231304.1557771162
2024.03.06 -
[출처] https://youtu.be/BeEjoTa9sSo?si=jght3spH8ryvUxUr https://youtu.be/3_pASBWPovc?si=guyVjtFXfqmijkK3 PVRTC[POWERVR TEXTURE COMPRESSED][IOS] 4X4 블럭기반 DXT에 더해 이미지를 블러링하여 블럭 경계를 페더링처리한다. 원래의 이미지의 대표 색상을 분리하고 하드웨어에서 결합하는 과정을 거침 블러링 현상이 발생함., 픽셀이 중요한 그래픽에 적합하지 않음. 키 컬러를 최대 4개까지 추출이 가능하며, 복잡한 색에 대해서 그라데이션 값을 지정 여러 패턴을 가지고 압축에 사용하기 때문에 생각하는 것보다 용량이 크기 않다. ETC[ELECSON] 블럭기반 색상과 밝기로 분류하여 마지막에 합성함 블러킹현상..
[Unity] 모바일 기기를 위한 이미지 포맷[출처] https://youtu.be/BeEjoTa9sSo?si=jght3spH8ryvUxUr https://youtu.be/3_pASBWPovc?si=guyVjtFXfqmijkK3 PVRTC[POWERVR TEXTURE COMPRESSED][IOS] 4X4 블럭기반 DXT에 더해 이미지를 블러링하여 블럭 경계를 페더링처리한다. 원래의 이미지의 대표 색상을 분리하고 하드웨어에서 결합하는 과정을 거침 블러링 현상이 발생함., 픽셀이 중요한 그래픽에 적합하지 않음. 키 컬러를 최대 4개까지 추출이 가능하며, 복잡한 색에 대해서 그라데이션 값을 지정 여러 패턴을 가지고 압축에 사용하기 때문에 생각하는 것보다 용량이 크기 않다. ETC[ELECSON] 블럭기반 색상과 밝기로 분류하여 마지막에 합성함 블러킹현상..
2024.03.06 -
Privacy Policy Krap built the Souls app as a Free app. This SERVICE is provided by Krap at no cost and is intended for use as is. This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service. If you choose to use my Service, then you agree to the collection and use of information in relation to thi..
Privacy PolicyPrivacy Policy Krap built the Souls app as a Free app. This SERVICE is provided by Krap at no cost and is intended for use as is. This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service. If you choose to use my Service, then you agree to the collection and use of information in relation to thi..
2024.03.03