45 lines
1.3 KiB
ActionScript
45 lines
1.3 KiB
ActionScript
class RenderService : Service {
|
|
EntityEnvir nment env;
|
|
SceneCamera sceneCamera;
|
|
MeshComponent meshC;
|
|
Entity child;
|
|
|
|
void init() {
|
|
env = Resource::createLoadEntityEnvironment("PreviewerEnv");
|
|
|
|
child = env.getRootEntity().createChild("Render");
|
|
meshC = child.createMeshComponent();
|
|
ShaderComponent shaderC = child.createShaderComponent();
|
|
|
|
shaderC.shader = Resource::loadShader("shader.glsl");
|
|
|
|
sceneCamera.transform.position.z = -3;
|
|
sceneCamera.transform.position.y = 1;
|
|
|
|
}
|
|
|
|
[Expose]
|
|
FrameBuffer renderMeshPreview(GPUMesh mesh) {
|
|
FrameBuffer buffer = Resource::createLoadRGBA8FrameBuffer(mesh.path, 128, 128, 4);
|
|
|
|
buffer.clearRGBA(0, 0, 0, 0);
|
|
meshC.meshResource = mesh;
|
|
child.transform.rotation = vec3(0, 0, 0);
|
|
env.render(buffer, sceneCamera);
|
|
|
|
return buffer;
|
|
}
|
|
|
|
[Expose]
|
|
FrameBuffer renderMeshPreview_fase(GPUMesh mesh, float fase) {
|
|
FrameBuffer buffer = Resource::createLoadRGBA8FrameBuffer(mesh.path, 128, 128, 4);
|
|
|
|
buffer.clearRGBA(0, 0, 0, 0);
|
|
meshC.meshResource = mesh;
|
|
child.transform.rotation = vec3(0, (1-(1/(1+fase * fase)))*45, 0);
|
|
env.render(buffer, sceneCamera);
|
|
|
|
return buffer;
|
|
}
|
|
}
|