2017-12-06 3 views
0

ShaderToyコードをy = 0に1つのプレーンのみを持つ基本的なOpenGLレンダラに統合しようとしています。しかし、私はどこから始めるべきか分からない。私の飛行機がリアルタイムで3Dレンダリングされている間、ShaderToyはuvテクスチャにレンダリングします。 2つのレンダリング手法をどのように統合するか、あるいは混在させることができるかの例はありますか?raymarchingとラスタライズ

答えて

0

MVP行列については忘れて、2D画像としてレンダリングしてください。

shaderToyから得たものとします。

vec4 mainImage(in vec2 fragCoord) { 
    // some code you download from shaderToy 
    return color; 
} 

バーテックスシェーダへ

void mainImage(out vec4 fragColor, in vec2 fragCoord) { 
    // some code you download from shaderToy 
    fragColor = color; // suppose 
} 

変更、これは簡単です、あなたは単にOpenGLは、計算を行うことができます。

#version 330 

in vec2 v_vert; 
out vec2 f_vert; 

void main() { 
    f_vert = v_vert; 
} 

fragColorを計算するために、あなたは頂点シェーダから何を得るの使用、(フラグメントシェーダへの均一な時間変化を渡すために覚えている)、それゆえフラグメントシェーダは、次のようにする必要があります:

#version 330 

uniform float iTime; // this might vary, depends on the version of shaderToy 

in vec2 f_vert; 
out vec4 FragColor; 

vec4 mainImage(in vec2 fragCoord) { 
    // some code you download from shaderToy 
    return color; 
} 

void main() { 
    FragColor = mainImage(f_vert); 
} 
+0

ありがとう、それは助けになった。どのようにラスターカラーとロードされたモデルからの色付きレームを組み合わせるのですか?たとえば、ラスタライズされたモデルにraymarched shadowを適用できますか? – Homar

関連する問題