|
@@ -146,6 +146,7 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
|
|
|
|
|
|
var meshPreviewScene : hide.comp.Scene;
|
|
var meshPreviewScene : hide.comp.Scene;
|
|
var meshPreviewMeshes : Array<h3d.scene.Mesh> = [];
|
|
var meshPreviewMeshes : Array<h3d.scene.Mesh> = [];
|
|
|
|
+ var meshPreviewScreenFX : Array<hrt.prefab.rfx.ScreenShaderGraph> = [];
|
|
var meshPreviewRoot3d : h3d.scene.Object;
|
|
var meshPreviewRoot3d : h3d.scene.Object;
|
|
var meshPreviewShader : hxsl.DynamicShader;
|
|
var meshPreviewShader : hxsl.DynamicShader;
|
|
var meshPreviewCameraController : hide.comp.Scene.PreviewCamController;
|
|
var meshPreviewCameraController : hide.comp.Scene.PreviewCamController;
|
|
@@ -936,6 +937,7 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
|
|
{label: "", isSeparator: true},
|
|
{label: "", isSeparator: true},
|
|
{label: "Sphere", click: setMeshPreviewSphere},
|
|
{label: "Sphere", click: setMeshPreviewSphere},
|
|
{label: "Plane", click: setMeshPreviewPlane},
|
|
{label: "Plane", click: setMeshPreviewPlane},
|
|
|
|
+ {label: "Screen FX", click: setMeshPreviewScreenFX},
|
|
{label: "Mesh ...", click: chooseMeshPreviewFBX},
|
|
{label: "Mesh ...", click: chooseMeshPreviewFBX},
|
|
{label: "Prefab/FX ...", click: chooseMeshPreviewPrefab},
|
|
{label: "Prefab/FX ...", click: chooseMeshPreviewPrefab},
|
|
{label: "", isSeparator: true},
|
|
{label: "", isSeparator: true},
|
|
@@ -1027,11 +1029,24 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
|
|
meshPreviewShader = new hxsl.DynamicShader(compiledShader.shader);
|
|
meshPreviewShader = new hxsl.DynamicShader(compiledShader.shader);
|
|
|
|
|
|
for (init in compiledShader.inits) {
|
|
for (init in compiledShader.inits) {
|
|
- setParamValue(meshPreviewShader, init.variable, init.value);
|
|
|
|
|
|
+ setParamValue(meshPreviewShader, init.variable, init.value);
|
|
}
|
|
}
|
|
for (m in meshPreviewMeshes) {
|
|
for (m in meshPreviewMeshes) {
|
|
replaceMeshShader(m, meshPreviewShader);
|
|
replaceMeshShader(m, meshPreviewShader);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ for (fx in meshPreviewScreenFX) {
|
|
|
|
+ @:privateAccess fx.shaderPass.removeShader(fx.shader);
|
|
|
|
+
|
|
|
|
+ @:privateAccess fx.shaderDef = compiledShader;
|
|
|
|
+ @:privateAccess fx.shader = meshPreviewShader;
|
|
|
|
+
|
|
|
|
+ for (v in compiledShader.inits) {
|
|
|
|
+ Reflect.setField(fx.props, v.variable.name, v.value);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @:privateAccess fx.shaderPass.addShader(fx.shader);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
meshPreviewScene.engine.backgroundColor = previewSettings.bgColor;
|
|
meshPreviewScene.engine.backgroundColor = previewSettings.bgColor;
|
|
|
|
|
|
@@ -1090,6 +1105,7 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
|
|
mesh.remove();
|
|
mesh.remove();
|
|
|
|
|
|
meshPreviewRoot3d.removeChildren();
|
|
meshPreviewRoot3d.removeChildren();
|
|
|
|
+ meshPreviewScreenFX.resize(0);
|
|
}
|
|
}
|
|
|
|
|
|
public function setMeshPreviewMesh(mesh: h3d.scene.Mesh) {
|
|
public function setMeshPreviewMesh(mesh: h3d.scene.Mesh) {
|
|
@@ -1126,6 +1142,21 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
|
|
setMeshPreviewMesh(m);
|
|
setMeshPreviewMesh(m);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public function setMeshPreviewScreenFX() {
|
|
|
|
+ cleanupPreview();
|
|
|
|
+ previewSettings.meshPath = "ScreenFX";
|
|
|
|
+ saveSettings();
|
|
|
|
+
|
|
|
|
+ var shared = new hide.prefab.ContextShared(null, meshPreviewRoot3d);
|
|
|
|
+ var root = new hrt.prefab.fx.FX(null, shared);
|
|
|
|
+ var screenFX = new hrt.prefab.rfx.ScreenShaderGraph(root, shared);
|
|
|
|
+ @:privateAccess screenFX.shaderGraph = this.shaderGraph;
|
|
|
|
+ root.make();
|
|
|
|
+
|
|
|
|
+ meshPreviewScreenFX.push(screenFX);
|
|
|
|
+ meshPreviewShader = null;
|
|
|
|
+ }
|
|
|
|
+
|
|
public function chooseMeshPreviewFBX() {
|
|
public function chooseMeshPreviewFBX() {
|
|
var basedir = haxe.io.Path.directory(previewSettings.meshPath ?? "");
|
|
var basedir = haxe.io.Path.directory(previewSettings.meshPath ?? "");
|
|
if (basedir == "" || !haxe.io.Path.isAbsolute(basedir)) {
|
|
if (basedir == "" || !haxe.io.Path.isAbsolute(basedir)) {
|
|
@@ -1162,6 +1193,8 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
|
|
setMeshPreviewSphere();
|
|
setMeshPreviewSphere();
|
|
case "Plane":
|
|
case "Plane":
|
|
setMeshPreviewPlane();
|
|
setMeshPreviewPlane();
|
|
|
|
+ case "ScreenFX":
|
|
|
|
+ setMeshPreviewScreenFX();
|
|
default: {
|
|
default: {
|
|
if (StringTools.endsWith(str, ".fbx")) {
|
|
if (StringTools.endsWith(str, ".fbx")) {
|
|
setMeshPreviewFBX(str);
|
|
setMeshPreviewFBX(str);
|
|
@@ -1351,6 +1384,10 @@ class ShaderEditor extends hide.view.FileView implements GraphInterface.IGraphEd
|
|
|
|
|
|
function setParamValue(shader : DynamicShader, variable : hxsl.Ast.TVar, value : Dynamic) {
|
|
function setParamValue(shader : DynamicShader, variable : hxsl.Ast.TVar, value : Dynamic) {
|
|
@:privateAccess ShaderGraph.setParamValue(shader, variable, value);
|
|
@:privateAccess ShaderGraph.setParamValue(shader, variable, value);
|
|
|
|
+
|
|
|
|
+ for (fx in meshPreviewScreenFX) {
|
|
|
|
+ Reflect.setField(fx.props, variable.name, value);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/** IGraphEditor interface **/
|
|
/** IGraphEditor interface **/
|