2016년 3월 3일 목요일

Unity Shader

=================================================================================

2. 서브 쉐이더

쉐이더 구조체 내용

 struct SurfaceOutputStandard
{
    fixed3 Albedo;      // base (diffuse or specular) color
    fixed3 Normal;      // tangent space normal, if written
    half3 Emission;
    half Metallic;      // 0=non-metal, 1=metal
    half Smoothness;    // 0=rough, 1=smooth
    half Occlusion;     // occlusion (default 1)
    fixed Alpha;        // alpha for transparencies
};
struct SurfaceOutputStandardSpecular
{
    fixed3 Albedo;      // diffuse color
    fixed3 Specular;    // specular color
    fixed3 Normal;      // tangent space normal, if written
    half3 Emission;
    half Smoothness;    // 0=rough, 1=smooth
    half Occlusion;     // occlusion (default 1)
    fixed Alpha;        // alpha for transparencies
};

struct Input {
            float2 uv_MainTex;
            float2 uv_GlossTex;
            float2 uv_BumpMap;
            float3 viewDir;
            float3 worldRefl;
            INTERNAL_DATA
        };



블랜드 설정(http://docs.unity3d.com/Manual/SL-Blend.html)
Blend SrcAlpha OneMinusSrcAlpha // Traditional transparency
Blend One OneMinusSrcAlpha // Premultiplied transparency
Blend One One // Additive
Blend OneMinusDstColor One // Soft Additive
Blend DstColor Zero // Multiplicative
Blend DstColor SrcColor // 2x Multiplicative



=================================================================================
3. shader 변수

- 텍스처 수치 변경 하지 못하게 하는 법
[NoScaleOffset] _MainTex("Texture", 2D) = "white" {}


- 변수에 접근
Material material;
material = transform.GetComponent<Renderer>().material;

float ddd = 1.0f;
ddd -= Time.deltaTime / 10.0f;
material.SetFloat("_Alpha", ddd);


=================================================================================



=================================================================================

6. sementics

- screenPos : 를 쓰기 위해서는 아래 참고
fixed4 frag(v2f i, UNITY_VPOS_TYPE screenPos : VPOS) : SV_Target{}


- face ( normal direction )
fixed4 frag(fixed facing : VFACE) : SV_Target


- vid ( vertex id 인듯)
v2f vert(float4 vertex : POSITION, uint vid : SV_VertexID)


- normal ( 노말 )
v2f vert(float4 vertex : POSITION, float3 normal : NORMAL)



=================================================================================

7. Culling & Depth Testing

Syntax

- Cull Back | Front | Off

- ZWrite On | Off   (default is On)
  Drawing solid objects, leave this on
  Drawing semitransparent effects, switch to ZWrite Off

- ZTest Less | Greater | LEqual | GEqual | Equal | NotEqual | Always
  (Default is LEqual : Draw objects in from or at the distance as existing objects; hide objects behind them)




  





2016년 1월 31일 일요일

Direct Show(ds)



===============================================
DS 에서 알아야 할 각종 멀티미디어 관련 단어

1. RIFF ( Resource Interchange File Format) : 해더에 압출 방식을 기술 해놓는걸 말하는 듯?  이것을 적용한 파일의 경우 다양한 필터의 적용이 가능해진다.

2.PCM (Pulse Code Modulation) : 아날로그 신호의 디지털화, 계단식으로 나누어 표현

3.ADPCM(Audio Compression Manager) : 목소리를 디지털 신호로 바꾸는 거라고..

4.ACM(Audio Compression Manager) : 기존의 윈도우 기술에서 사용되는 오디오 압축/해제. 그래서 압축된 형태의 오디오 파일은 ACM 래퍼 필터를 통해 해제

5.VCM(Vedio Compression Manager) : ACM과 함께 윈도우에서 사용되는 비디오 압축/해제 기술

===============================================


2016년 1월 27일 수요일

삼각함수 (sin cos tan) 정리

삼각함수는 수학의 기본, 기본이 흔들리는 나 같은 사람들을 위한 정리

그런줄 알면서도 왜 인지는 크게 생각지 못했던 부분들

1. Sin Cos Tan 뒤에는 한상 각도가 붙는다. 세타 같은

2. Sin, Cos 값을 나타내는 곡선은 -1 과 1을 오르락 내리락 하는 괴적을 나타낸다.

왜 그런가!

우선 sin cos tan의 의미 부터 살펴보자


출처

위 그림의 많은 부호들 중 가장 첫 번째로 봐야 할 것은 대문자 A 이다.
A는 그 꼭지점의 각도를 뜻한다.

B와 C도 각 꼭지점의 각도이다.

h는 빗변, b는 밑변, a는 높이.

a와 b는 마주보는 꼭지점 각도와 그 이름을 같게 한 것으로 보이고
h의 경우 소문자 c를 사용하지 않은 이유는
h의 길이는 다른 것에 의해 변경되지 않기 때문이다.
또한 각도 C의 경우 늘 그 값이 90로 가정되기 때문이다.
정해진 상수의 경우 특이한 문자로 정해둔 것 같다.

이제부터는 sin, cos, tan 뒤에 그 A를 붙여보고 그 값을 구해볼 것이다.


sinA = a/h
cosA = b/h
tanA = a/b = sinA/cosA






2015년 12월 30일 수요일

HLSL 내장함수, shader 함수

출처:여기

1. 삼각 함수

sin(x), cos(x), tan(x) : 기본삼각함수

asin(x), acos(x), atan(x) : 역삼각함수

atan2(y,x) : atan(y/x)에 해당하는 함수로, 
    atan(x)는 [-π/2, π/2]의 범위의 값을 가지지만, atan2(y,x)는  [-π, π]의 값을 리턴한다.
    atan2(y,x)는 x≠0 이면 항상 올바른 값을 계산핤 수 있으므로 더 선호한다.

sinh(x), cosh(x), tanh(x) : 쌍곡 삼각함수

sincos(x,s,c) : sin(x)와 cos(x)를 동시에 s, c로 리턴한다. 여기서 s, c는 x와 동일한 차원의 타입이어야 한다.

degrees(x) : 라디안 단위의 x값에 해당하는 각도값을 리턴한다.

radians(x) : 각도 단위의 x값에 해당하는 라디안값을 리턴한다.


2. 수학 함수
sqrt(x) : 제곱근

rsqrt(x) 
: 제곱근의 역수

exp(x), exp2(x), pow(x, y) : e^x, 2^x, x^y

ldexp(x) : x * 2^y

log(x), log10(x), log2(x) : loge(x), log10(x), log2(x)
→ 모든 로그함수의 인자값 x는 양수값으로 지정해야 한다.
    x가 음수이면 함수값이 정의되지 않고, x=0이면 -무한대를 리턴한다.


3. 값 변환 함수

abs(x)
 : 절대값

sign(x) : 부호에 따라 음수이면 -1, 0이면 0, 양수이면 1을 리턴

ceil(x) : 올림한 정수를 리턴
floor(x) : 내림한 정수를 리턴
round(x) : 반올림한 정수를 리턴
→ 리턴하는 정수값의 타입은 모드 float 타입이다.

max(x,y), min(x,y) : 최대, 최소값

clamp(x, min, max) : x를 [min, max] 범위로 클램프한다.
    즉, x가 범위안에 있으면 x를 그대로 리턴하지만, min보다 작으면 min을, max보다 크면 max를 리턴한다.

saturate(x) : x를 [0, 1] 범위로 클램프한다.

lerp(x,y,s) : 선형보간인 x + s(y - x) 를 리턴한다. x, y, s는 모두 동일한 타입으로 지정.

step(x,y) : x≤y 이면 1을 리턴하고, 그렇지 않으면 0을 리턴한다.

smoothstep(min,max,x) : x가 [min, max] 사이의 값인 경우에 대해서 [0, 1] 사이에서 부드럽게 변하는
    Hermite 보간법을 리턴한다. x가 min보다 작다면 0을 리턴하고, max보다 크다면 1을 리턴한다.

asfloat(x) : 입력인자값을 float 타입으로 바꾼다.
asint(x) : 입력인자값을 int 타입으로 바꾼다.
asuint(x) : 입력인자값을 uint 타입으로 바꾼다.

fmod(x,y) : x/y의 나머지를 실수로 리턴한다.

frac(x) : x의 소수점 이하 부분을 리턴한다.

frexp(x,e) : 주어진 실수 x의 표현에서의 소수점 이하값인 가수부분과 지수부분을 동시에 리턴한다.
    가수부분을 e로 리턴하고, 지수부분을 함수리턴값으로 리턴한다.

modf(x,i) : x의 정수부분을 i로 리턴하고, 소수점 이하부분을 함수리턴값으로 리턴한다.


4. 테스트 함수

a11(x) : 인자값의 모든 원소들이 0이 아닌지를 검사한다. 모두 0이 아니면 bool타입의 true값을 리턴한다.

any(x) : x의 원소중에 0이 아닌 원소가 하나라도 있으면 true값을 리턴한다.

isfinite(x) : 인자값이 무한대가 아닌 유한한 값이면 true를 리턴한다.

isinf(x) : 무한대 값(±INF)이면 true를 리턴한다.

isnan(x) : NAN(Not a Number)이면 true를 리턴한다.


5. 벡터 함수

cross(x,y) : 두 벡터의 외적을 계산한다. 두 인자값과 리턴값은 모두 float3 타입이다.

dot(x,y) : 두 벡터의 내적을 계산한다.
distance(x,y) : 두 벡터의 거리를 계산한다.
length(x) : 벡터의 길이를 계산한다.
→ 이들은 모두 하나의 float를 리턴한다.

normalize(x) : 정규화된 벡터를 리턴한다. 즉, 리턴값은 x/length(x) 와 동일하다.

determinant(m) : 행렬식을 리턴한다. 입력인자는 정방행렬이어야 한다.

transpose(m) : 전치행렬을 리턴한다.

mul(x,y) : 두 행렬의 곱을 계산한다.


6. 기타 함수

ddx(x), ddy(x) : 스크린공간의 x, y 좌표에 대한 x, y의 편미분을 리턴한다.
fwidth(x) : abs( ddx(x) ) + abs( ddy(x) ) 를 리턴한다.
clip(x) : x의 한 원소가 0보다 작으면 현재 픽셀을 버린다.
→ 이 함수들을 픽셀셰이더에서만 사용할 수 있다.

↓ 고급기법에서 사용되는 함수
faceforward(n, i, ng) : 관찰자를 향하는 표면 노말을 리턴한다.
reflect(i, n) : 반사벡터를 리턴한다.
refract(i, n, R) : 굴절벡터를 리턴한다.
lit(n·l, n·h, m) : 조명계수 벡터를 리턴한다.
noise(x) : 연기나 화재효과에 사용되는 Perlin 노이즈값을 리턴한다.

2015년 10월 18일 일요일

svn

============================================

svn merge


============================================

svn checkout URL Path

//부가 사항 테스트 필요
svn checkout -r 100 URL   (revision 100번 소스 받기)
svn checkout -r HEAD URL  (마지막 리비전 받기)


============================================

svn update Path

============================================

경로 만들기
svn mkdir Path\foldername

============================================

파일을 관리 대상으로 서버에 추가
svn add Path\filename.txt

============================================

svn commit Path --message comment

============================================

svn delete Path\filename.txt

============================================
============================================
============================================
============================================

출처 http://blog.naver.com/sjh77ch/62179981

SVN(Subversion)은 형상관리를 위한 도구이다. 다시 말하면 소프트웨어 개발의 버전 관리 시스템이다.

SVN에서 많이 사용되는 명령어는 다음과 같다.

checkout 또는 co - 저장소(repository)에서 로컬 작업공간으로 소스를 받아오는 것.
$ svn checkout 저장소URL [PATH...]
: 지정된 로컬경로에 저장소의 소스가 복사된다. 경로가 지정안되면 저장소URL의 맨마지막 디렉토리명이 저장될 디렉토리로 사용되어진다. -r 옵션으로 리비전을 지정한 경우엔 해당 리비전의 소스를 가져온다.
예제) svn checkout -r 99 http://repository/src src
설명) 저장소에서 리비전 번호 99의 src경로내의 소스를 가져온다.

update 또는 up - 저장소(repository)의 최신 내용으로 로컬 소스를 갱신 한다.
$ svn update [PATH...]
: 기본적으로 최신 리비전을 반영한다. 그러나 -r 옵션으로 리비전을 지정한 경우엔 그 리비전으로 맞춘다.

commit 또는 ci - 로컬에서 수정된 내용을 저장소에 적용시킨다.
$ svn commit [PATH...]
: 기본적으로 이 명령을 내리면 수정 사항을 코멘트할 수 있게 로그 편집기가 실행된다. lock된 파일이나 디렉토리는 commit성공후 자동적으로 unlock된다.

lock - 저장소의 파일이나 디렉토리를 잠근다.
$ svn lock TARGET
: lock이 걸린 파일이나 디렉토리는 다른 사용자가 변경하여 commit할 수 없다. 해당 경로의 작업이 너무 방대하여 그 동안 다른 사용자가 수정하지 못하도록 할때 유용.

unlock - 저장소의 잠근 파일이나 디렉토리를 풀어준다.
$ svn unlock TARGET
: lock의 반대. 기본적으로 lock을 건 사용자가 풀어줘야 한다.

add - 새 파일이나 디렉토리를 추가한다.
$ svn add PATH...
: add 명령은 지정된 PATH의 새로운 파일이나 디렉토리를 버전관리 대상에 등록할 뿐이므로, add후 commit 명령을 수행해야만 실제로 저장소에 해당 파일이 추가된다.

delete 또는 del, remove, rm - 파일이나 디렉토리를 제거한다.
$ svn delete PATH...(URL)
: delete 명령은 add와 반대로 해당 PATH의 파일이나 디렉토리을 버전관리 대상에서 삭제한다. 역시 commit 명령을 수행해야만 실제로 저장소에서 해당 목록이 제거된다. URL로 지정했을 경우 해당 목록은 즉시 저장소에서 제거된다.


copy 또는 cp - 로컬 사본이나 저장소 내용을 복사한다. 브랜치(branch)를 만들기 위해 사용.
$ svn copy SRC  DST
: SRC가 로컬경로이고 DST도 로컬경로일 경우, 로컬복사되고 commit시 저장소에 복사 목록이 추가 저장된다. SRC가 로컬경로이고 DST가 저장소URL일 경우, URL에 복사되고 즉시 commit됨. SRC가 저장소URL이고 DST가 로컬경로일 경우, 로컬로 checkout하고 commit시 저장소에 해당 사본이 추가.
SRC가 저장소URL이고 DST도 저장소URL일 경우, 저장소 내에 브랜치(branch)를 만듬.

move 또는 mv, rename, ren - 파일이나 디렉토리의 이름을 바꾸거나 이동시킨다. 이 명령은 copy후 delete와 같다.
$ svn move SRC  DST
: SRC가 로컬경로이고 DST도 로컬경로일 경우, 로컬로 rename 또는 move되고 commit시 저장소에 반영된다. SRC가 저장소URL이고 DST도 저장소URL일 경우, 저장소에서 rename,move가 바로 commit됨.

info - 해당 파일에 대한 정보를 출력한다.
$ svn info TARGET
: TARGET의 저장소 URL경로나 마지막 수정 일자등에 대한 정보를 보여준다.

log - 해당 경로나 파일의 로그( 리비전에 따라 변경된 내역)를 볼수 있다.
$ svn log [PATH]
: 지정된 로컬 PATH에 대한 로그를 출력한다. -r 옵션을 지정하면 출력할 리비젼 범위등을 정할 수 있다.
예제) svn log -r 30:100 test.c
설명) 리비전 번호 30~100 내에서 test.c에 대한 로그를 출력한다.

status 또는 stat, st - 로컬 경로의 파일이나 디렉토리의 상태를 보여준다.
$ svn status [PATH]
: 해당 파일이 수정, 추가되었는지 등의 정보를 보여준다. -u 옵션을 주면 저장소의 최신 리비젼이 얼마인지 알려준다.

diff 또는 di - 서로 다른 리비젼 간에 차이점을 출력해준다.
$ svn diff [-r N:M] TARGET
: 지정된 파일이나 경로에 대해 이전 리비젼하고 차이점을 보여준다. -r 을 지정하면 리비젼 N과 M사이의 차이점을 출력해준다.
예제) svn -r 30:45 test
설명) test 경로내에서 리비젼 번호 30과 45의 차이점을 출력해준다.

merge - 두 source 사이에 변경 내용을 작업 경로에 적용해준다.
1. $ svn merge URL1[@N] URL2[@M] [PATH]
2. $ svn merge [-r N:M] SOURCE [PATH]
: 1. URL1[리비젼 N]과 URL2[리비젼 M]을 비교하여, 변경 내용을 작업경로에 적용한다.
  2. SOURCE의 리비젼 N과 M을 비교하여, 해당 작업경로에 적용한다.
merge는 branch로 분리된 source에 대해 각각의 변경 내용을 현재의 작업에 병합하고자 할때 유용하다.

blame 또는 praise, annotate, ann - 지정한 파일이나 URL의 내용 수정내역을 각 라인별로 보여준다.
$ svn blame TARGET
: 해당 파일의 각 라인에 대해 리비젼과 작성자를 나타내 준다. 누가 언제 어떤행을 수정했는지 알수 있음.

import - 파일과 디렉토리를 저장소에 추가한다.
$ svn import [PATH] URL

: URL에 지정된 PATH의 하위 디렉토리는 재귀적으로 추가되며, 필요시 상위 디렉토리가 자동으로 생성된다.

export - 저장소에서 순수하게 프로그램 소스만 가져온다.
$ svn export URL [PATH]
: export는 버전관리를 위한 부속 파일들은 제외하고 순수한 소스만 받아오기 때문에, 주로 source release 용도로 사용되게된다. -r 옵션을 지정해서 해당 리비젼의 소스를 받아올 수 있다.



2015년 10월 2일 금요일

CodeIgniter


------------------------------------------------------------------------------

database 설정
application/config/database.php 값 세팅

$db['default'] = array(
'dsn' => 'mysql:host=localhost:33066;dbname=bkdb',
'hostname' => 'localhost:33066',
'username' => 'root',
'password' => 'qwer1234',
'database' => 'bkdb',
'dbdriver' => 'pdo',
        .
        .
        .

dsn :필히 입력해 줘야 하고
dbdriver : pdo로 해줘야 PDO 방식으로 적용됨

위 내용에서 hostname 과 database 는 주석 처리를 해도 됨

mysql:host=localhost:33066;dbname=bkdb 의 내용은

database가 mysql 이고
host 는 localhost, port는 33066
database에 붙여진 이름은 bkdb
(testDB 든 topic 이든 create database 하면서 지어준 이름)
   

------------------------------------------------------------------------------

설정값 가져오기
1. $this->config->item('base_url')
config.php 파일에 기술된 base_url 을 리턴



------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------

2015년 10월 1일 목요일