SlideShare une entreprise Scribd logo
1  sur  31
80줄로 웹지엘
입문하기
canvas
javascript
WebGL Library
GLSL
개발환경
WEBGL
WebGL 프로그래밍을 한다는 것은?
javascript로 만들어진 데이터를 기반으로
javscript형식의 webGL API를 통해 GPU를 동작시키는것
javascript GLSL
1. Context3D 검색
2. 렌더러 준비
var gl = canvas.getContext(‘webgl’) // webgl Context 요청
gl.drawArray() // 전용 API
function render(){
gl.clearColor(Math.random(),Math.random(),Math.random(), 1)
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
}
setInterval(render,16)
GPU 그래픽스의 기본
삼각형을 그려서 어떠한 형상을 그려내는 것
GPU 그래픽스의 기본
문제는
CPU에 있는 데이터를
GPU에 어떻게 전달/실행 시킬 것인가
버퍼(Buffer)
쉐이더(Shader)
프로그램(Program)
유니폼(Uniform)
Viewport
Canvas Area
-1 1
-1
1
배열 버퍼
버퍼(Buffer)
HOW TO..
var triangleData = [ 0.0, 1.0, 0.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0 ]
var triangleBuffer = gl.createBuffer()
// 1.버퍼생성
gl.bindBuffer(gl.ARRAY_BUFFER,triangleBuffer)
// 2.버퍼를 GPU에 바인딩
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(triangleData),gl.STATIC_DRAW)
// 3.버퍼에 데이터를 입력
triangleBuffer.itemSize = 3
triangleBuffer.numItem = 3
// 4.생성된 버퍼를 담아둔 JS 오브젝트에 추가정보입력
쉐이더(Shader)
쉐이더(Shader)
Geometry
Vertex Shader
쉐이더(Shader)
Fragment Shader
Vertex Shader Fragment Shader
레스터 라이즈
HOW TO..
var firstShader = gl.createShader(gl.VERTEX_SHADER)
gl.shaderSource(firstShader, 쉐이더소스)
gl.compileShader(firstShader)
컴파일을 왜 해?
GPU입장에서 넘어온 데이터는 단순 문자열!
이게 프로그램이니 컴파일을 해두라고 명령… 쉐이더
HOW TO..
var vertexShaderStr = ""+
"attribute vec3 aVertexPosition;" +
"void main(void) {" +
" gl_Position = vec4(aVertexPosition, 1.0);" +
"}“
버텍스 쉐이더의 최종 목적 : gl_Position
HOW TO..
var fragmentShaderStr = ""+
"void main(void) {" +
" gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);" +
"}"
프래그먼트 쉐이더의 최종 목적 : gl_FragColor
프로그램(program)
var firstProgram = gl.createProgram()
gl.attachShader(firstProgram , vertexShader)
gl.attachShader(firstProgram, fragmentShader)
gl.linkProgram(firstProgram)
firstProgram.aVertexPosition =
gl.getAttribLocation(firstProgram, "aVertexPosition");
Renderer Update
gl.useProgram(fristProgram)
gl.bindBuffer(gl.ARRAY_BUFFER, triangleBuffer)
gl.useProgram(fristProgram)
gl.bindBuffer(gl.ARRAY_BUFFER, triangleBuffer)
gl.enableVertexAttribArray(firstProgram.aVertexPosition)
gl.vertexAttribPointer(
firstProgram.aVertexPosition,
triangleBuffer.itemSize, // x,y,z
gl.FLOAT, false, 0, 0
)
gl.useProgram(fristProgram)
gl.bindBuffer(gl.ARRAY_BUFFER, triangleBuffer)
gl.enableVertexAttribArray(firstProgram.aVertexPosition)
gl.vertexAttribPointer(firstProgram.aVertexPosition, triangleBuffer.itemSize, gl.FLOAT, false, 0, 0)
gl.drawArrays(gl.TRIANGLES, 0, triangleBuffer.numItem)
코드 리뷰
유니폼(uniform) Draw가 진행되는 동안 상수처럼 유지되는 변수
var vertexShaderStr = "" +
"attribute vec3 aVertexPosition;" +
"uniform vec3 uRotation;" +
"uniform vec3 uPosition;" +
…
firstProgram.uRotation = gl.getUniformLocation(firstProgram, "uRotation");
firstProgram.uPosition = gl.getUniformLocation(firstProgram, "uPosition");
유니폼(uniform) Draw가 진행되는 동안 상수처럼 유지되는 변수
"void main(void) {" +
" gl_Position = " +
" positionMTX(uPosition) * " +
" rotationMTX(uRotation) * " +
" vec4(aVertexPosition, 1.0);" +
"}"
유니폼(uniform) Draw가 진행되는 동안 상수처럼 유지되는 변수
var rotation = 0
var position = 0
function render() {
.. 생략
gl.vertexAttribPointer(firstProgram.aVertexPosition, triangleBuffer.itemSize, gl.FLOAT, false, 0, 0);
rotation += 0.1
position += 0.1
gl.uniform3fv(firstProgram.uRotation, [rotation, rotation, rotation])
gl.uniform3fv(firstProgram.uPosition, [Math.sin(position), Math.cos(position), 0])
gl.drawArrays(gl.TRIANGLES, 0, triangleBuffer.numItem);
}
유니폼(uniform) Draw가 진행되는 동안 상수처럼 유지되는 변수
gl.uniform3fv(firstProgram.uRotation, [rotation, rotation, rotation])
gl.uniform3fv(firstProgram.uPosition, [Math.sin(position), Math.cos(position), 0])
gl.drawArrays(gl.TRIANGLES, 0, triangleBuffer.numItem);
gl.uniform3fv(firstProgram.uRotation, [0, 0, 0])
gl.uniform3fv(firstProgram.uPosition, [0, 0, 0])
gl.drawArrays(gl.TRIANGLES, 0, triangleBuffer.numItem);
End
Bswebgl.com – 런치프로젝트 webGL
https://www.facebook.com/groups/bs5js/

Contenu connexe

Tendances

Clean Front-End Development
Clean Front-End DevelopmentClean Front-End Development
Clean Front-End Development지수 윤
 
개발자의 컴퓨터
개발자의 컴퓨터개발자의 컴퓨터
개발자의 컴퓨터jaehyok Song
 
Vuejs 시작하기
Vuejs 시작하기Vuejs 시작하기
Vuejs 시작하기성일 한
 
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발정석 양
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
Node.js
Node.jsNode.js
Node.jsymtech
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVCArawn Park
 
Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028BJ Jang
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수NAVER D2
 
React native 개발 및 javascript 기본
React native 개발 및 javascript 기본React native 개발 및 javascript 기본
React native 개발 및 javascript 기본Tj .
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기Taegon Kim
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초beom kyun choi
 
GraphQL overview #2
GraphQL overview #2GraphQL overview #2
GraphQL overview #2기동 이
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs근호 최
 
[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자NAVER D2
 
GraphQL overview
GraphQL overviewGraphQL overview
GraphQL overview기동 이
 
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationSecrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationHyuncheol Jeon
 
웃으면서Python
웃으면서Python웃으면서Python
웃으면서PythonJiyoon Kim
 

Tendances (20)

Clean Front-End Development
Clean Front-End DevelopmentClean Front-End Development
Clean Front-End Development
 
개발자의 컴퓨터
개발자의 컴퓨터개발자의 컴퓨터
개발자의 컴퓨터
 
Vuejs 시작하기
Vuejs 시작하기Vuejs 시작하기
Vuejs 시작하기
 
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
 
Node.js at OKJSP
Node.js at OKJSPNode.js at OKJSP
Node.js at OKJSP
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
Node.js
Node.jsNode.js
Node.js
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVC
 
Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028Geo server 성능향상을 위한 튜닝 기법 20111028
Geo server 성능향상을 위한 튜닝 기법 20111028
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수
 
React native 개발 및 javascript 기본
React native 개발 및 javascript 기본React native 개발 및 javascript 기본
React native 개발 및 javascript 기본
 
ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기ReactJS로 시작하는 멀티플랫폼 개발하기
ReactJS로 시작하는 멀티플랫폼 개발하기
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초
 
GraphQL overview #2
GraphQL overview #2GraphQL overview #2
GraphQL overview #2
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs
 
[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자
 
GraphQL overview
GraphQL overviewGraphQL overview
GraphQL overview
 
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationSecrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
 
웃으면서Python
웃으면서Python웃으면서Python
웃으면서Python
 

En vedette

[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL
[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL
[1A3]지금까지 상상한 표현의 한계를 넘자 WebGLNAVER D2
 
쉽게 풀어보는 WebGL
쉽게 풀어보는 WebGL쉽게 풀어보는 WebGL
쉽게 풀어보는 WebGLMyung Woon Oh
 
Bs webgl소모임004
Bs webgl소모임004Bs webgl소모임004
Bs webgl소모임004Seonki Paik
 
피보나치 수열로 알아보는 몇가지 프로그래밍 개념
피보나치 수열로 알아보는 몇가지 프로그래밍 개념피보나치 수열로 알아보는 몇가지 프로그래밍 개념
피보나치 수열로 알아보는 몇가지 프로그래밍 개념Myung Woon Oh
 
ELD12: Badge Design
ELD12: Badge DesignELD12: Badge Design
ELD12: Badge Designhalavais
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!changehee lee
 
The Power of WebGL - Hackeando sua GPU com JavaScript
The Power of WebGL - Hackeando sua GPU com JavaScriptThe Power of WebGL - Hackeando sua GPU com JavaScript
The Power of WebGL - Hackeando sua GPU com JavaScriptRaphael Amorim
 
WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webpjcozzi
 
[9xD] 개발자, 스터디로 성장하기
[9xD] 개발자, 스터디로 성장하기[9xD] 개발자, 스터디로 성장하기
[9xD] 개발자, 스터디로 성장하기한재 제
 
1인개발자가되기전알아야할것들
1인개발자가되기전알아야할것들1인개발자가되기전알아야할것들
1인개발자가되기전알아야할것들Jinsub Jung
 
WebGL: The Next Generation
WebGL:  The Next GenerationWebGL:  The Next Generation
WebGL: The Next GenerationTony Parisi
 
WebGL의 무궁무진한 가능성
WebGL의 무궁무진한 가능성 WebGL의 무궁무진한 가능성
WebGL의 무궁무진한 가능성 Jun Ho Lee
 

En vedette (12)

[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL
[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL
[1A3]지금까지 상상한 표현의 한계를 넘자 WebGL
 
쉽게 풀어보는 WebGL
쉽게 풀어보는 WebGL쉽게 풀어보는 WebGL
쉽게 풀어보는 WebGL
 
Bs webgl소모임004
Bs webgl소모임004Bs webgl소모임004
Bs webgl소모임004
 
피보나치 수열로 알아보는 몇가지 프로그래밍 개념
피보나치 수열로 알아보는 몇가지 프로그래밍 개념피보나치 수열로 알아보는 몇가지 프로그래밍 개념
피보나치 수열로 알아보는 몇가지 프로그래밍 개념
 
ELD12: Badge Design
ELD12: Badge DesignELD12: Badge Design
ELD12: Badge Design
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!
 
The Power of WebGL - Hackeando sua GPU com JavaScript
The Power of WebGL - Hackeando sua GPU com JavaScriptThe Power of WebGL - Hackeando sua GPU com JavaScript
The Power of WebGL - Hackeando sua GPU com JavaScript
 
WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open web
 
[9xD] 개발자, 스터디로 성장하기
[9xD] 개발자, 스터디로 성장하기[9xD] 개발자, 스터디로 성장하기
[9xD] 개발자, 스터디로 성장하기
 
1인개발자가되기전알아야할것들
1인개발자가되기전알아야할것들1인개발자가되기전알아야할것들
1인개발자가되기전알아야할것들
 
WebGL: The Next Generation
WebGL:  The Next GenerationWebGL:  The Next Generation
WebGL: The Next Generation
 
WebGL의 무궁무진한 가능성
WebGL의 무궁무진한 가능성 WebGL의 무궁무진한 가능성
WebGL의 무궁무진한 가능성
 

Similaire à Bs webgl소모임001 uniform버전

웹개발자가 알아야할 기술
웹개발자가 알아야할 기술웹개발자가 알아야할 기술
웹개발자가 알아야할 기술jaypi Ko
 
20131217 html5
20131217 html520131217 html5
20131217 html5DK Lee
 
Surface flingerservice(서피스플링거서비스초기화 ics)
Surface flingerservice(서피스플링거서비스초기화 ics)Surface flingerservice(서피스플링거서비스초기화 ics)
Surface flingerservice(서피스플링거서비스초기화 ics)fefe7270
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
Domain Specific Languages With Groovy
Domain Specific Languages With GroovyDomain Specific Languages With Groovy
Domain Specific Languages With GroovyTommy C. Kang
 
Python qgis advanced
Python qgis advancedPython qgis advanced
Python qgis advancedJiyoon Kim
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기jongho jeong
 
[FOSS4G Korea 2016] Workshop - Advanced GeoServer
[FOSS4G Korea 2016] Workshop - Advanced GeoServer[FOSS4G Korea 2016] Workshop - Advanced GeoServer
[FOSS4G Korea 2016] Workshop - Advanced GeoServerMinPa Lee
 
DEVIEW-FULL-감독판.pptx
DEVIEW-FULL-감독판.pptxDEVIEW-FULL-감독판.pptx
DEVIEW-FULL-감독판.pptxhanbeom Park
 
c++ opencv tutorial
c++ opencv tutorialc++ opencv tutorial
c++ opencv tutorialTaeKang Woo
 
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)LanarkSeung
 
정적 컨텐츠 제너레이터 GatsbyJS에 대해서 알아봅시다.
정적 컨텐츠 제너레이터 GatsbyJS에 대해서 알아봅시다.정적 컨텐츠 제너레이터 GatsbyJS에 대해서 알아봅시다.
정적 컨텐츠 제너레이터 GatsbyJS에 대해서 알아봅시다.Kenneth Ceyer
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015sung yong jung
 
Flash Player 11과 AIR 3 환경에서 3D 개발
Flash Player 11과 AIR 3 환경에서 3D 개발Flash Player 11과 AIR 3 환경에서 3D 개발
Flash Player 11과 AIR 3 환경에서 3D 개발Yongho Ji
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성HyeonSeok Choi
 
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028MinPa Lee
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처Sunggon Song
 

Similaire à Bs webgl소모임001 uniform버전 (20)

웹개발자가 알아야할 기술
웹개발자가 알아야할 기술웹개발자가 알아야할 기술
웹개발자가 알아야할 기술
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 
Surface flingerservice(서피스플링거서비스초기화 ics)
Surface flingerservice(서피스플링거서비스초기화 ics)Surface flingerservice(서피스플링거서비스초기화 ics)
Surface flingerservice(서피스플링거서비스초기화 ics)
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Domain Specific Languages With Groovy
Domain Specific Languages With GroovyDomain Specific Languages With Groovy
Domain Specific Languages With Groovy
 
Python qgis advanced
Python qgis advancedPython qgis advanced
Python qgis advanced
 
Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기
 
[FOSS4G Korea 2016] Workshop - Advanced GeoServer
[FOSS4G Korea 2016] Workshop - Advanced GeoServer[FOSS4G Korea 2016] Workshop - Advanced GeoServer
[FOSS4G Korea 2016] Workshop - Advanced GeoServer
 
DEVIEW-FULL-감독판.pptx
DEVIEW-FULL-감독판.pptxDEVIEW-FULL-감독판.pptx
DEVIEW-FULL-감독판.pptx
 
Modern android
Modern androidModern android
Modern android
 
c++ opencv tutorial
c++ opencv tutorialc++ opencv tutorial
c++ opencv tutorial
 
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
 
정적 컨텐츠 제너레이터 GatsbyJS에 대해서 알아봅시다.
정적 컨텐츠 제너레이터 GatsbyJS에 대해서 알아봅시다.정적 컨텐츠 제너레이터 GatsbyJS에 대해서 알아봅시다.
정적 컨텐츠 제너레이터 GatsbyJS에 대해서 알아봅시다.
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015
 
Flash Player 11과 AIR 3 환경에서 3D 개발
Flash Player 11과 AIR 3 환경에서 3D 개발Flash Player 11과 AIR 3 환경에서 3D 개발
Flash Player 11과 AIR 3 환경에서 3D 개발
 
go-qml
go-qmlgo-qml
go-qml
 
D2 Havok
D2 HavokD2 Havok
D2 Havok
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
 
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처
 

Bs webgl소모임001 uniform버전

Notes de l'éditeur

  1. 서로다른 세계…각각을 동작시키는 방법이 다름 GPU를 물리적으로 직접 코딩하기 어렵기 때문에.. webGL 라이브러리를 이용..
  2. 키값에 대해서도 설명해야겠군.. 웹지엘과 같은 그래픽스 처리에서는 1초당 최대 최대 60프레임을 그렸다 지웠다 반복하며 화면의 움직임을 표현함..
  3. GPU가 가장 잘 할 수 있는 일은 삼각형 그리는 기능
  4. 삼각형을 잘 조합해서 어떠한 형상을 그려내게됨 삼각형을 어떻게 그리는지가 문제임
  5. WebGL API의 역할은 javascript를 통해서 GPU에게 말할 수 있는 통역기 CPU에서 이용하던 데이터가 GPU로 가면서 이를 구분하기위한 용어들이 생겨남… 이제부터 그걸 알아봄…
  6. 기본 좌표계 설명 비율단위로 표현된다고 말해야겠군..
  7. 거기에 삼각형을 배열로 삼각형 정점 정보를 입력함
  8. 정점 정보를 연결해서 점3개를 지정했음.. 각점을 가상의 직선을 이용해서 GPU는 그릴 영역을 확정하게 되는데..
  9. 계산된 영역내의 색상을 어떻게 지정할껀가라는 문제가 있는데.. 이를 fragment Shader가 담당함…즉 2개의 쉐이더를 이용함…
  10. 쉐이더 소스란…. 지오메트리 결정할때 변환을 할수 있음! 근데 이소스가 GLSL이라 하여 C언어를 기초로한…상위레벨 언어임.. 근데 쉬움…
  11. 버텍스 쉐이더에서 가능한 일들 예시 프레그먼트 쉐이더에서 가능한 일들 예시.. 각 쉐이더를 조합해서 프로그램이 다양해 지면…..포토샵도 만듬..
  12. 버텍스 쉐이더에서 가능한 일들 예시 프레그먼트 쉐이더에서 가능한 일들 예시.. 각 쉐이더를 조합해서 프로그램이 다양해 지면…..포토샵도 만듬..
  13. 쉐이더만들었는데 뭔 프로그램? 쉐이더는 버텍스쉐이더와 프레그먼트 쉐이더가 반드시 쌍으로 돌아감.. 이를 묶어놓은것이 프로그램… 역시나 GPU에게 일일이 알려줘야함… 삼각형 하나 그리는데 드릅게 머가 마늠…