Processing에서 GLSL 셰이더를 시작하는 샘플 코드 (Java, Python 모두)
9893 단어 processing파이썬ShaderGLSL자바
소개
프로그래밍 초보자라도 쉽게 시작할 수 있는 툴 Processing(프로세싱)으로, 프래그먼트 셰이더를 실행할 수 있습니다. Java 또는 Python으로 작성할 수 있습니다.
실행 화면
왼쪽은 Java 코드이고 오른쪽은 Python 코드입니다.
자바로 쓰고 싶을 때
구현
우선은 셰이더의 내용을 쓴 프로그램을 data 폴더 안에 둡니다.
data/FragmentShader.glsl
uniform vec2 resolution;
uniform float time;
void main() {
vec2 uv = -1. + 2. * gl_FragCoord.xy / resolution.xy;
gl_FragColor = vec4(
abs( sin( cos( time + 3. * uv.y ) * 2. * uv.x + time)),
abs( cos( sin( time + 2. * uv.x ) * 3. * uv.y + time)),
1.0,
1.0);
}
Processing 본체 프로그램에는 다음과 같이 씁니다. FragmentShader.glsl과 파일명을 지정하는 것만으로 data 폴더 안을 찾아 가 줍니다.
PShader sd;
void setup() {
size(600, 600, P2D);
sd = loadShader("FragmentShader.glsl");
}
void draw() {
sd.set("time", millis() / 1000.0);
sd.set("resolution", (float)width, (float)height);
shader(sd);
rect(0, 0, width, height);
}
파이썬으로 쓰고 싶을 때
파이썬 모드 설치
기본적으로 오른쪽 상단의 언어 설정은 Java 만 선택할 수 있지만,
쉽게 파이썬 모드를 추가할 수 있습니다.
(이쪽의 링크가 이미지 첨부로 알기 쉽습니다)
htps : // py 또는 r에 ゔぁl. 이 m/p 로세신 gpy1/
구현
마찬가지로 data 폴더 안에 자바 때와 정확히 같은 셰이더 파일을 넣어
data/FragmentShader.glsl
uniform vec2 resolution;
uniform float time;
void main() {
vec2 uv = -1. + 2. * gl_FragCoord.xy / resolution.xy;
gl_FragColor = vec4(
abs( sin( cos( time + 3. * uv.y ) * 2. * uv.x + time)),
abs( cos( sin( time + 2. * uv.x ) * 3. * uv.y + time)),
1.0,
1.0);
}
Processing 본체 프로그램에는 다음과 같이 씁니다.
global sd를 변수를 선언해두면 setup 함수나 draw 함수 모두 같은 셰이더 객체를 참조할 수 있습니다.
def setup():
global sd
size(600, 600, P2D)
sd = loadShader("FragmentShader.glsl")
def draw():
global sd
sd.set("time", millis() / 1000.0)
sd.set("resolution", float(width), float(height))
shader(sd)
rect(0, 0, width, height)
이상, Processing에서 Java에서도 Python에서도 GLSL을 즐기자!
Reference
이 문제에 관하여(Processing에서 GLSL 셰이더를 시작하는 샘플 코드 (Java, Python 모두)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mizumasa/items/887c4e85c688a2b0d5f1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
왼쪽은 Java 코드이고 오른쪽은 Python 코드입니다.
자바로 쓰고 싶을 때
구현
우선은 셰이더의 내용을 쓴 프로그램을 data 폴더 안에 둡니다.
data/FragmentShader.glsl
uniform vec2 resolution;
uniform float time;
void main() {
vec2 uv = -1. + 2. * gl_FragCoord.xy / resolution.xy;
gl_FragColor = vec4(
abs( sin( cos( time + 3. * uv.y ) * 2. * uv.x + time)),
abs( cos( sin( time + 2. * uv.x ) * 3. * uv.y + time)),
1.0,
1.0);
}
Processing 본체 프로그램에는 다음과 같이 씁니다. FragmentShader.glsl과 파일명을 지정하는 것만으로 data 폴더 안을 찾아 가 줍니다.
PShader sd;
void setup() {
size(600, 600, P2D);
sd = loadShader("FragmentShader.glsl");
}
void draw() {
sd.set("time", millis() / 1000.0);
sd.set("resolution", (float)width, (float)height);
shader(sd);
rect(0, 0, width, height);
}
파이썬으로 쓰고 싶을 때
파이썬 모드 설치
기본적으로 오른쪽 상단의 언어 설정은 Java 만 선택할 수 있지만,
쉽게 파이썬 모드를 추가할 수 있습니다.
(이쪽의 링크가 이미지 첨부로 알기 쉽습니다)
htps : // py 또는 r에 ゔぁl. 이 m/p 로세신 gpy1/
구현
마찬가지로 data 폴더 안에 자바 때와 정확히 같은 셰이더 파일을 넣어
data/FragmentShader.glsl
uniform vec2 resolution;
uniform float time;
void main() {
vec2 uv = -1. + 2. * gl_FragCoord.xy / resolution.xy;
gl_FragColor = vec4(
abs( sin( cos( time + 3. * uv.y ) * 2. * uv.x + time)),
abs( cos( sin( time + 2. * uv.x ) * 3. * uv.y + time)),
1.0,
1.0);
}
Processing 본체 프로그램에는 다음과 같이 씁니다.
global sd를 변수를 선언해두면 setup 함수나 draw 함수 모두 같은 셰이더 객체를 참조할 수 있습니다.
def setup():
global sd
size(600, 600, P2D)
sd = loadShader("FragmentShader.glsl")
def draw():
global sd
sd.set("time", millis() / 1000.0)
sd.set("resolution", float(width), float(height))
shader(sd)
rect(0, 0, width, height)
이상, Processing에서 Java에서도 Python에서도 GLSL을 즐기자!
Reference
이 문제에 관하여(Processing에서 GLSL 셰이더를 시작하는 샘플 코드 (Java, Python 모두)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mizumasa/items/887c4e85c688a2b0d5f1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
uniform vec2 resolution;
uniform float time;
void main() {
vec2 uv = -1. + 2. * gl_FragCoord.xy / resolution.xy;
gl_FragColor = vec4(
abs( sin( cos( time + 3. * uv.y ) * 2. * uv.x + time)),
abs( cos( sin( time + 2. * uv.x ) * 3. * uv.y + time)),
1.0,
1.0);
}
PShader sd;
void setup() {
size(600, 600, P2D);
sd = loadShader("FragmentShader.glsl");
}
void draw() {
sd.set("time", millis() / 1000.0);
sd.set("resolution", (float)width, (float)height);
shader(sd);
rect(0, 0, width, height);
}
파이썬 모드 설치
기본적으로 오른쪽 상단의 언어 설정은 Java 만 선택할 수 있지만,
쉽게 파이썬 모드를 추가할 수 있습니다.
(이쪽의 링크가 이미지 첨부로 알기 쉽습니다)
htps : // py 또는 r에 ゔぁl. 이 m/p 로세신 gpy1/
구현
마찬가지로 data 폴더 안에 자바 때와 정확히 같은 셰이더 파일을 넣어
data/FragmentShader.glsl
uniform vec2 resolution;
uniform float time;
void main() {
vec2 uv = -1. + 2. * gl_FragCoord.xy / resolution.xy;
gl_FragColor = vec4(
abs( sin( cos( time + 3. * uv.y ) * 2. * uv.x + time)),
abs( cos( sin( time + 2. * uv.x ) * 3. * uv.y + time)),
1.0,
1.0);
}
Processing 본체 프로그램에는 다음과 같이 씁니다.
global sd를 변수를 선언해두면 setup 함수나 draw 함수 모두 같은 셰이더 객체를 참조할 수 있습니다.
def setup():
global sd
size(600, 600, P2D)
sd = loadShader("FragmentShader.glsl")
def draw():
global sd
sd.set("time", millis() / 1000.0)
sd.set("resolution", float(width), float(height))
shader(sd)
rect(0, 0, width, height)
이상, Processing에서 Java에서도 Python에서도 GLSL을 즐기자!
Reference
이 문제에 관하여(Processing에서 GLSL 셰이더를 시작하는 샘플 코드 (Java, Python 모두)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mizumasa/items/887c4e85c688a2b0d5f1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)