shadertoy效果移植到creator 3.2 失败,请各位大神帮忙看下代码。谢谢。

shadertoy地址
Buffer pass bloom (shadertoy.com)
shadertoy代码
#define colorRange 24.0

vec3 jodieReinhardTonemap(vec3 c){
float l = dot(c, vec3(0.2126, 0.7152, 0.0722));
vec3 tc = c / (c + 1.0);

return mix(c / (l + 1.0), tc, tc);

}

vec3 bloomTile(float lod, vec2 offset, vec2 uv){
return texture(iChannel1, uv * exp2(-lod) + offset).rgb;
}

vec3 getBloom(vec2 uv){

vec3 blur = vec3(0.0);

blur = pow(bloomTile(2., vec2(0.0,0.0), uv),vec3(2.2))       	   	+ blur;
blur = pow(bloomTile(3., vec2(0.3,0.0), uv),vec3(2.2)) * 1.3        + blur;
blur = pow(bloomTile(4., vec2(0.0,0.3), uv),vec3(2.2)) * 1.6        + blur;
blur = pow(bloomTile(5., vec2(0.1,0.3), uv),vec3(2.2)) * 1.9 	   	+ blur;
blur = pow(bloomTile(6., vec2(0.2,0.3), uv),vec3(2.2)) * 2.2 	   	+ blur;

return blur * colorRange;

}

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
vec2 uv = fragCoord.xy / iResolution.xy;

vec3 color = pow(texture(iChannel0, uv).rgb * colorRange, vec3(2.2));
color = pow(color, vec3(2.2));
color += pow(getBloom(uv), vec3(2.2));
color = pow(color, vec3(1.0 / 2.2));

color = jodieReinhardTonemap(color);

fragColor = vec4(color,1.0);

}

creator 代码

CCEffect %{

techniques:

  • passes:

    • vert: sprite-vs:vert

      frag: sprite-fs:frag

      depthStencilState:

      depthTest: false

      depthWrite: false

      blendState:

      targets:

      • blend: true

        blendSrc: src_alpha

        blendDst: one_minus_src_alpha

        blendDstAlpha: one_minus_src_alpha

      rasterizerState:

      cullMode: none

      properties:

}%

CCProgram sprite-vs %{

precision highp float;

#include

in vec3 a_position;

in vec2 a_texCoord;

in vec4 a_color;

out vec4 v_color;

out vec2 v_uv0;

vec4 vert () {

vec4 pos = vec4(a_position, 1);

pos = cc_matViewProj * pos;

v_uv0 = a_texCoord;

v_color = a_color;

return pos;

}

}%

CCProgram sprite-fs %{

#include

precision highp float;

in vec4 v_color;

in vec2 v_uv0;

#define colorRange 24.0

vec3 jodieReinhardTonemap(vec3 c){

float l = dot(c, vec3(0.2126, 0.7152, 0.0722));

vec3 tc = c / (c + 1.0);

return mix(c / (l + 1.0), tc, tc);

}

vec3 bloomTile(float lod, vec2 offset, vec2 uv){

return texture(cc_spriteTexture, uv * exp2(-lod) + offset).rgb;

}

uniform Properties {

vec4 iResolution;

};

vec3 getBloom(vec2 uv){

vec3 blur = vec3(0.0);

blur = pow(bloomTile(2., vec2(0.0,0.0), uv),vec3(2.2))            + blur;

blur = pow(bloomTile(3., vec2(0.3,0.0), uv),vec3(2.2)) * 1.3        + blur;

blur = pow(bloomTile(4., vec2(0.0,0.3), uv),vec3(2.2)) * 1.6        + blur;

blur = pow(bloomTile(5., vec2(0.1,0.3), uv),vec3(2.2)) * 1.9      + blur;

blur = pow(bloomTile(6., vec2(0.2,0.3), uv),vec3(2.2)) * 2.2      + blur;

return blur * colorRange;

}

vec4 frag () {

// o *= texture(cc_spriteTexture, v_uv0)*v_color;

vec3 color = pow(texture(cc_spriteTexture, v_uv0).rgb * colorRange, vec3(2.2));

color = pow(color, vec3(2.2));

color += pow(getBloom(v_uv0), vec3(2.2));

color = pow(color, vec3(1.0 / 2.2));



color = jodieReinhardTonemap(color);



vec4 o = vec4(color,1.0);

return o;

}

}%
bloom.zip (881 字节)
creator 效果
1628132069(1)
请各位大神帮忙看下。谢谢。