Silverlight 4 Beta 공개

RIA 2009. 11. 19. 09:00 Posted by 알 수 없는 사용자

Microsoft PDC09 행사 2일째가 진행중인데 Scott Guthrie의 키노트 발표에서 드디어 Silverlight 4가 공개되었습니다.
올 해 3월달에 MIX09 행사에서 Silverlight 3 베타가 발표되고 7월에 정식 버전이 나왔는데 이후 4개월만에 다시 새로운 버전 베타가 나왔네요.
PDC09 생중계를 보면서 설마설마했는데 발표가 끝나자마자 바로 다운로드가 가능해졌습니다.

아쉽게도 Visual Studio 2010 Beta2에서만 설치가 가능하며 Visual Studio 2008에서는 SL4를 지원하지 않습니다.
그렇지만 VS2010에서 새롭게 향상된 점을 이용한 SL4개발이 기대되지 않나요? ㅎㅎ

키노트에서 SL4의 새로운 점과 데모를 보여줬는데 그 동안 요구사항이 많았던 기능들이 대부분 들어간 것 같습니다.
많은 기능 향상이 이루어졌지만 구글 크롬 브라우저의 정식 지원도 눈에 띄네요.
기존에도 구글 크롬에서 실버라이트가 사용이 가능했지만 공식 지원이 아니라서 그런지 간혹 문제점이 발견되기도 했었는데 SL4에서는 크롬 브라우저를 지원하게 되었습니다.
개인적으로는 웹캠과 마이크 지원, 그리고 HTML 지원 등이 가장 맘에 드네요.
이 외에도 정말 많은 기능과 성능 향상이 이루어졌습니다.
자세한 내용은 Silverlight 4 Beta 공식 사이트에서 확인이 가능합니다.

일단 SL4 발표 소식을 간단하게 전하며 앞으로 차근차근 Silverlight 4와 Visual Studio 2010에서의 개발 방법에 대해 알아보도록 하겠습니다.

[JumpToDX11-7] 간편해진 리소스 처리.

DirectX 11 2009. 11. 18. 15:00 Posted by 알 수 없는 사용자


이번 회의 설명을 위해서 API 를 다음과 같이 크게 나누어 보았습니다.

·        Thread unsafe API

·        Thread safe API

·        Free threaded API


Thread unsafe 한 경우에는 멀티스레드들이 동시에 호출할 수 있지만,
이들에 대한 안정성에 대해서는 전혀 보장하지 않습니다.
결과가 갑자기 이상할 수도 있고, 예측 불가능한 상황을 연출할 수도 있습니다.
주로 즉시즉시 상황을 만들어야 할때 사용될 수 있을 것입니다.

Thread safe 한 API 는 어떤 동기화 모델에 의해서 API 가 보호되어집니다.
여러 스레드에서 API 를 호출하더라도, 그들의 안정적인 동작을 보장한다는 의미입니다.
동기화 작업이 별도로 있기 때문에 느려질 수 있다는 단점이 있습니다.

Free threaded 한 API 는 여러 스레드에서 호출을 하더라도,
어떠한 동기화 모델 없이도 API 가 안정적으로 동작한다는 것을 의미합니다.
그렇기 때문에 아주 높은 성능 향상을 얻을 수 있습니다.

< 기존의 리소스 처리 >

멀티스레드 기반의 렌더링으로 가는 첫번째 길은 리소스 부분입니다.
PC 가 발전하면서 성능적으로나 용량적으로 많은 발전을 거듭했습니다.
더블어 게임에서 사용되는 리소스의 용량도 크게 증가했습니다.

멀티스레드 처리가 어느 정도 자리를 잡으면서,
현재 많은 게임들은 이들 리소스에 대한 처리를 별도의 스레드에서 처리하기도 합니다.




일반적인 텍스쳐 로딩 상황을 한번 가정해 보았습니다.
가장 먼저 로더 스레드가 특정한 파일을 읽습니다.
읽어둔 파일을 바탕으로 실제 메모리를 할당하기 위해서는 결국 Device 인터페이스를 통해야 합니다.
DirectX 에서 리소스 관련 메모리를 할당하는 것은
Device 인터페이스를 통해서만 가능하기 때문입니다.
커맨드(Command) 를 생성하는 권한은 오직 Device 인터페이스만이 가지고 있습니다.
( 지난 회를 참고하시기 바랍니다. )

멀티스레드 기반으로 리소스를 로딩하고 있지만,
실제로는 많은 부분이 메인스레드( 여기서는 Render Thread )에 의존하여 작업이 수행되고 있습니다.
리소스를 생성하기 위해서는 반드시 Create, Lock & Unlock 작업이 필요합니다.

< 여기서 잠깐...>
사실 위의 그림의 경우에는 일반적으로 사용되는 구조로 보기 어렵습니다.
그림은 거의 순차적인 처리 구조이기 때문에,
이런 경우라면 굳이 저렇게 사용할 필요가 없습니다.
실제로 많은 게임들은 텍스쳐가 아직 로딩 중이라면,
Default-Material 을 적용해서 폴리곤을 렌더링하도록 구현하기도 합니다.
즉, Render Thread 가 쉴새 없이 계속 커맨드를 생성하는 구조입니다.^^
그리고 위의 예는 간단한 설명을 위한 것입니다.
개발자분들마다 개성 강한 여러 방법들이 존재하시겠죠? ^^

 

 < 간편해진 리소스 관련 커맨드 생성 >

우리가 DirectX 에서 사용하는 대부분의 리소스 작업은 사실 Free Threaded 합니다.
리소스 처리를 위해서 특별한 동기화 처리가 API 레벨에서는 필요하지 않습니다.
( 개발자의 몫입니다. )
그런데 위의 그림처럼 그 동안은 커맨드를 생성해주는 인터페이스가 오직 하나였기 때문에
메인 스레드에 의존해서 처리할 수 밖에 없었습니다.

두번째 시간에 저는 Device와 DeviceContext 에 대해서 설명을 드렸습니다.
기억이 나지 않으시는 분들은 다시 살펴보시기 바랍니다.^^
요약해드리자면, DirectX11 에서는 Free threaded 한 API 와 그렇지 않은 API 들을 분리했습니다.
Free threaded 한 부분에 바로 리소스 처리가 있습니다.
앞서 우리는 Free threaded 의 이점에 대해서 짧게 언급했었습니다.

위의 그림에서,
이제는 Loader therad 는 굳이 메인 스레드( Render thread ) 에 의존하지 않아도,
순차적으로 리소스 관련 커맨드들을 생성시킬 수 있습니다.
커맨드들이 생성되는 순서는 Free threaded 한 경우에는 중요하지 않기 때문에,
빠른 속도로 처리
할 수 있습니다.
특히나, 메인스레드가 별도로 다른 작업을 수행해서 커맨드를 생성시키는 작업이 있다고 해도,
그것과는 별도로 커맨드 생성 작업을 수행할 수 있습니다.
( 커맨드 생성을 위한 대기 시간이 짧아졌다고 할 수 있습니다. )
이로써, 이제는 조금 더 멀티스레딩 형식에 가까워졌다고 할 수 있습니다.

리소스 처리를 이렇게 분리하는 것은
멀티스레드 기반으로 렌더링으로 가는 중요한 기반을 제공
해 주었습니다.

< 다음 회에서는.... >
다음 회부터는 이제 멀티스레드 기반으로 렌더링 관련 커맨드를 생성하는 것을 살펴볼 것입니다.


VS 2010 기능 소개 01 인텔리 센스 기능의 변화

Visual Studio 2010 2009. 11. 17. 02:25 Posted by 알 수 없는 사용자

 

ㅎㅎ 요즘 여기 저기서 경고를 하는(?) 말과 함께.. 열심히.. 글을 써 보도록 하겠습니다.
없는 글 솜씨 이지만.. 잘 봐쥐십시요 ^.^
 /) /)
(^.^)
(사실 백수가 뭐하겠습니까  .ㅠ 글이라도 써야 할듯)

 

첫번째 주제 인텔리 센스 ~~ NO~. Smart Intellisense 라고 불러주세요.~~~


제가 여러분들에 소개할 VS 2010의 기능을 몇가지 소개 하려 합니다.
처음에는 개발자들이 정말 좋아할 만한 것입니다. 듀얼 모니터? 네 그건 다음에 잠시 이야기하고..(그건 이미 널리 널리 알려졌으르로. ㅎㅎㅎ) 저는 첫번째 인텔리 센스에 대한 이야기를 하려 합니다.
인텔리 센스.. 네 컴퓨터 영화 에서 보면.. 우리의 주인공들이 키보드를 치는데.. 오~~ 오타 없이 그 짧은 시간에 촤~악~ 코딩 or 타이핑을 합니다. 오~~ 멋있습니다. 그럼.. 저요?? 전. 오타쟁이 입니다.(ㅠ.ㅠ)

 

VS 2010에서 개발자들이 좋아할 기능 중에 하나는 인텔리 센스~~ 쟁이가 좋아졌다는 것입니다. 그렇다면.. 정말 한번 코딩을 해봐야 하겠죵.^^ 네 해보시면.. 일단 개발자를 매일 코딩할 때 정말 좋

았던것은... 네 바로 오타를 줄일 수 있는 인텔리 센스~~ 기능을 이용한 코딩을 해보는 것입니다. 그것도 VS 2010의 쓰~ 마~ 아 ~ 트 인텔리 센스를.. 이용한.. 코딩이니다.


Visual C++에서의 인텔리 센스는 완전 환상으로 변경 되었는데 이것은 VSTS 2010 다른 블러그에 다 잘하시는 분들 있으므로 Pass 이고.. 전 일단 정말 편한지 부터 보는 것으로 하겠습니다.

간단히 ASP.NET 에서 Helloworld 부터 한번 출력해보겠습니다.(개발자들이라면 한번 해보는 "안녕 " 이죵 ㅋㅋㅋ)

ASP.NET 프로젝트에서 Default.aspx에서 버튼과 라벨을 이용해서 한번 출력을 해보는데..

여기서 라벨 컨트롤 ID를 변경하여 lblHello라고 변경하고 코딩을 한다고 해보겠습니다.

기존의 VS 2008에서 인텔리 센스는? 걍.. 처음부터 lbl 까지 쳐야 내가 생각한 lblHello 나오지

않을까요?

그렇다면 여기서 VS 2010에서는....

Hello라고 치면 어떨까요???(허~~~ 거 억~~ 정말??)

 

정말로 먼가 나타났습니다... 오~~~~~~~~ 인텔리센스가 스마트 해졌당~~ 라고 하면 어떨까요?

ㅋㅋ 네 제가 스마트라고 했는데.. 이렇게 코딩할 때 Smart Intellisense 라고 합니다.

즉 해당되는 연상단어만 쳐도 인텔리센스에 표시되어 쉽게 코딩을 할 수 있는 것입니다.

정말 똑똑해 진거죠?? (오 정말 기득해지지 아니한가???? 오냐 이뻐해주마 VS 2010)


ㅋㅋ 이로써 앞으로 오타쟁이에서 조금 벗어나지 않을까 합니다. 왜냐? 오타 하나 찾기 위하여 참 많은 삽질(?) 했던 기억이 있는데 이런 오토를 줄일 수 있거나 개발을 할때 타이핑의 속도를 빠르게 할 수 있다는 것은 .. 그 만큼 소스 코드를 오류 없이 빠르게 완성할 수 있고 완성이 끝나면.. 다음 일을 할 수 있다는 것입니다.(난 퇴근이다.~~~ ㅎㅎㅎ 짤릴려낭 ㅠ.ㅠ) 

정리하면 오늘 소개한 스마트 인텔리 센스를 이용하여 코딩의 시간을 단축할 수 있다는 것인데, 그 만큼 오류 없이 코딩을 하여 개발의 생산성에 도움을 주는 훌륭한 기능입니다.

그럼 다음에는 다른 것을 조금 더 알아보겠습니다.