본문 바로가기

기초 프로그래밍

(9)
Unity3D Shader 방식 Fixed Function Program키워드로 구성정점기반 라이팅 (가볍고 빠르다)오래된 하드웨어와 호환Fixed Function Program 예 Vertex / Fragment Program셰이더 모델 : 2.0 / 3.0셰이더 언어 : Cg, GLSL셰이더 : 버텍스, 픽셀 셰이더CGIncludes 디렉터리셰이더 관련 다양한 매크로 및 함수 제공Cg To GLSL 자동 변환Vertex / Fragment Shader 예 Surface Shaderexpand source Vertex Lit Rendering PathForward Rendering PathDeferred Lighting Render PathFixed Fundtion ProgramO Vertex Fragment Program O Sur..
HLSL 내장 함수 (자료형) ※ 용어는 사전 링크를 포함하고 있습니다. 함수 내용 sample2D 2D Texture sample3D 3D Texutre float4 32 bit : Vector에 주로 쓰임 half4 16 bit : Color값에 주로 쓰임 (모바일 지원) fixed4 8 bit : Color 값에 주로 쓰임 (모바일 지원 안함) tex2D(s, t) 텍스쳐 샘플링에 사용하는 HLSL 함수. 첫 번째 인자에서 두 번째 인자 좌표에 있는 텍셀을 구하는 함수. s는 샘플러 또는 sampler2D 개체 (Texture), t는 2D 텍스처 좌표 (UV) tex2D(s, t, ddx, ddy) 2D의 투영 텍스처 참조 ddx(x), ddy(x) 스크린공간의 x, y 좌표에 대한 x, y의 편미분을 리턴한다 reflect(..
스크립트에서 쉐이더에 변수 전달하기. .shader Shader "MyShader"{Properties{....} SubShader{ int A; // 전달받을 변수 float B; // 전달받을 변수 sampler2D C; // 전달받을 변수 sampler3D D; // 전달받을 변수} ※ SubShader 에다 변수를 선언하고.... using System.Collections;using System.Collections.Generic;using UnityEngine; public class MyClass: MonoBehaviour { private Material myMaterial; // 쉐이더에 접근할 머트리얼private myMaterial= new Material(MyShader); // MyShader를 적용 // 넘길 데이터..
두점간의 거리 구하는 공식 두점간의 거리 구하는 공식 수학적 공식은 다음과 같다. √ ( x2 - x1 )² + ( y2 - y1 )² CODE식은 다음과 같다. float Distance = sqrtf((A.x - B.x) * (A.x - B.x) + (A.y - B.y) * (A.y - B.y));
3항 연산자. 3항 연산자. 해당 조건을 충족시키면, A를, 아니면 B를 대입시킨다. if문을 이용한 방식 EX) a가 b보다 작으면 C에 D를 대입, 아니면 E를 대입 if (a < b) { C = D } else { C = E } 3항 연산자를 이용시 다음과 같다. C = (a < b) ? D : E; [해석] C = (조건) ? 조건이 맞으면 이것 : 아니면 이것;
#05. 변수의 위치(전역변수, 지역변수) 변수의 위치 앞서 메모리의 개념에 대해 알아봤습니다. 이번에는 변수의 위치에 따른 전역변수와 지역변수를 다음 이미지를 통해 알아 보도록 하겠습니다. 지역변수와 전역변수의 활용 범위 위 이미지를 보면, 전역변수로 선언된 A는 지역변수에서 사용이 가능합니다. 하지만 지역변수를 상위 지역에서 활용이 불가능합니다. [요점정리] 1. 해당 지역보다 상위 지역에 있는 변수를 참조 가능 2. 해당 지역보다 상위 지역에 있는 변수와 같은 이름의 변수 생성 불가능 3. 같은 레벨이라 할지라도 해당 지역을 벗어나면, 기존의 변수는 사용 불가능하며, 새로 선언이 가능(지역1, 2의 변수 B)하며, 같은 내용을 저장하지 않음. (그냥 새 변수입니다.) 4. 상위 레벨에서는 하위 레벨의 지역변수를 참조하지 못함. 5. 지역변수..
#04. 메모리의 종류 메모리의 종류 앞서 메모리의 개념에 대해 알아봤습니다. 그럼 크게 메모리의 종류에 대해 간단하게 알아보도록 하겠습니다. (큰 틀만 알아보도록 하겠습니다.) 숫자형 자료 : 대표적으로 int, float, shot.. 등등이 있으며(자세한건 C강좌에서..), OS는 저장된 자료가 숫자임을 알 수 있게 하며, 여유 메모리공간 중, 임의의 장소에 해당 공간을 할당합니다. 문자형 자료 : 최소 단위로 char가 있으며, OS는 저장될 자료가 문자 또는 문자열(String)임을 알 수 있도록 하며, 역시 여유 메모리공간 중, 임의의 장소에 해당 공간을 할당 합니다. 함수형 자료 : 함수형 자료라 함은, 함수를 생성할때, 해당 작업에 대한 결과 값을 어떠한 자료로 저장할 지를 지정합니다.(이것에 대한 종류는 역시 ..
#03. 메모리의 개념 메모리의 개념 지난 시간에는 순차적 코딩을 통해, 간단한 출력문에 대한 코드를 확인해 보았습니다. 그중 메모리에 대한 몇가지 개념과 특성을 알아보려고 한다. (우리는 이번 게시물을 통해 int, float등에 대한 심도있는 학습을 하고자 하는게 아님을 분명히 밝힙니다. 그러니 어려운 이야기 나올까봐 쫄지 마시길...) 프로그래밍은 일단 메모리를 얼마나 적절하게 사용하느냐에 따라 작업에 대한 이해도가 달라지게 됩니다. 하지만 이러한 개념적 방식은 어떠한 곳에서도(필자가 아는 한...) 강의나 수업하지 않습니다. 일단 우리가 코딩을 하는데 있어서 사용되는 다양한 언어가 있습니다. (SQL, Python, C, C++, C#, java, lua, 등등... 매우 많습니다...) 모든 언어의 공통점은 메모리를 ..