mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-01-12 23:37:10 +01:00
- [HLSL] Add wrapper display to show the full vertex and fragment shader code.
This commit is contained in:
parent
306f2560ad
commit
b02dfa5d57
2 changed files with 66 additions and 63 deletions
|
@ -62,7 +62,7 @@ function Node_Camera(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
|
||||||
|
|
||||||
static getPreviewValues = function() { return getInputData(input_fix_len); }
|
static getPreviewValues = function() { return getInputData(input_fix_len); }
|
||||||
|
|
||||||
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny, _params) { #region
|
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny, _params) {
|
||||||
PROCESSOR_OVERLAY_CHECK
|
PROCESSOR_OVERLAY_CHECK
|
||||||
|
|
||||||
var _out = outputs[| 0].getValue();
|
var _out = outputs[| 0].getValue();
|
||||||
|
@ -85,9 +85,9 @@ function Node_Camera(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
|
||||||
var y1 = y0 + _area[3] * 2 * _zoom * _s;
|
var y1 = y0 + _area[3] * 2 * _zoom * _s;
|
||||||
|
|
||||||
draw_rectangle_dashed(x0, y0, x1, y1);
|
draw_rectangle_dashed(x0, y0, x1, y1);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static processData = function(_outSurf, _data, _output_index, _array_index) { #region
|
static processData = function(_outSurf, _data, _output_index, _array_index) {
|
||||||
var _area = _data[0];
|
var _area = _data[0];
|
||||||
var _zoom = _data[1];
|
var _zoom = _data[1];
|
||||||
|
|
||||||
|
@ -179,10 +179,5 @@ function Node_Camera(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
|
||||||
surface_reset_shader();
|
surface_reset_shader();
|
||||||
|
|
||||||
return _outSurf;
|
return _outSurf;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static processDeserialize = function() { #region
|
|
||||||
if(LOADING_VERSION < 11690)
|
|
||||||
ds_list_clear(load_map.inputs);
|
|
||||||
} #endregion
|
|
||||||
}
|
}
|
|
@ -49,10 +49,55 @@ output.color = surfaceColor;")
|
||||||
|
|
||||||
argumentRenderer();
|
argumentRenderer();
|
||||||
|
|
||||||
|
vs_string = @"#define MATRIX_WORLD 0
|
||||||
|
#define MATRIX_WORLD_VIEW 1
|
||||||
|
#define MATRIX_WORLD_VIEW_PROJECTION 2
|
||||||
|
|
||||||
|
cbuffer Matrices : register(b0) {
|
||||||
|
float4x4 gm_Matrices[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct VertexShaderInput {
|
||||||
|
float3 pos : POSITION;
|
||||||
|
float3 color : COLOR0;
|
||||||
|
float2 uv : TEXCOORD0;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct VertexShaderOutput {
|
||||||
|
float4 pos : SV_POSITION;
|
||||||
|
float2 uv : TEXCOORD0;
|
||||||
|
};
|
||||||
|
|
||||||
|
void main(in VertexShaderInput input, out VertexShaderOutput output) {
|
||||||
|
output.pos = mul(gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION], float4(input.pos, 1.0f));
|
||||||
|
output.uv = input.uv;
|
||||||
|
}";
|
||||||
|
|
||||||
|
_fs_preString = @"Texture2D gm_BaseTextureObject : register(t0);
|
||||||
|
SamplerState gm_BaseTexture : register(s0);
|
||||||
|
|
||||||
|
struct VertexShaderOutput {
|
||||||
|
float4 pos : SV_POSITION;
|
||||||
|
float2 uv : TEXCOORD0;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PixelShaderOutput {
|
||||||
|
float4 color : SV_TARGET0;
|
||||||
|
};
|
||||||
|
|
||||||
|
void main(in VertexShaderOutput _input, out PixelShaderOutput output) {
|
||||||
|
VertexShaderOutput input = _input;
|
||||||
|
";
|
||||||
|
fs_preString = _fs_preString;
|
||||||
|
fs_postString = "}";
|
||||||
|
|
||||||
|
preLabel = new Inspector_Label(fs_preString);
|
||||||
|
|
||||||
input_display_list = [ 2,
|
input_display_list = [ 2,
|
||||||
["Shader", false], 1,
|
["Vertex Shader [read only]", true], new Inspector_Label(vs_string),
|
||||||
["Arguments", false], argument_renderer,
|
["Shader", false], preLabel, 1, new Inspector_Label(fs_postString),
|
||||||
["Values", true],
|
["Arguments", false], argument_renderer,
|
||||||
|
["Values", true],
|
||||||
];
|
];
|
||||||
|
|
||||||
setDynamicInput(3, false);
|
setDynamicInput(3, false);
|
||||||
|
@ -177,57 +222,19 @@ output.color = surfaceColor;")
|
||||||
|
|
||||||
static onInspector1Update = function() { refreshShader(); }
|
static onInspector1Update = function() { refreshShader(); }
|
||||||
|
|
||||||
static step = function() { #region
|
static step = function() { argument_renderer.showValue = input_display_list[9][1]; }
|
||||||
argument_renderer.showValue = input_display_list[5][1];
|
|
||||||
} #endregion
|
|
||||||
|
|
||||||
static refreshShader = function() { #region
|
static refreshShader = function() {
|
||||||
var vs = getInputData(0);
|
var vs = getInputData(0);
|
||||||
var fs = getInputData(1);
|
var fs = getInputData(1);
|
||||||
|
|
||||||
var _dir = TEMPDIR;
|
var _dir = TEMPDIR;
|
||||||
directory_verify(_dir);
|
directory_verify(_dir);
|
||||||
|
|
||||||
var vs = @"
|
var vs = vs_string;
|
||||||
#define MATRIX_WORLD 0
|
|
||||||
#define MATRIX_WORLD_VIEW 1
|
|
||||||
#define MATRIX_WORLD_VIEW_PROJECTION 2
|
|
||||||
|
|
||||||
cbuffer Matrices : register(b0) {
|
|
||||||
float4x4 gm_Matrices[3];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct VertexShaderInput {
|
|
||||||
float3 pos : POSITION;
|
|
||||||
float3 color : COLOR0;
|
|
||||||
float2 uv : TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct VertexShaderOutput {
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 uv : TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
void main(in VertexShaderInput input, out VertexShaderOutput output) {
|
|
||||||
output.pos = mul(gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION], float4(input.pos, 1.0f));
|
|
||||||
output.uv = input.uv;
|
|
||||||
}";
|
|
||||||
file_text_write_all(_dir + "vout.shader", vs);
|
file_text_write_all(_dir + "vout.shader", vs);
|
||||||
|
|
||||||
var fs_pre = @"
|
var fs_param = "cbuffer Data : register(b10) {";
|
||||||
Texture2D gm_BaseTextureObject : register(t0);
|
|
||||||
SamplerState gm_BaseTexture : register(s0);
|
|
||||||
|
|
||||||
struct VertexShaderOutput {
|
|
||||||
float4 pos : SV_POSITION;
|
|
||||||
float2 uv : TEXCOORD0;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct PixelShaderOutput {
|
|
||||||
float4 color : SV_TARGET0;
|
|
||||||
};
|
|
||||||
"
|
|
||||||
var fs_param = "cbuffer Data : register(b10) {";
|
|
||||||
var fs_sample = "";
|
var fs_sample = "";
|
||||||
var sampler_slot = 1;
|
var sampler_slot = 1;
|
||||||
|
|
||||||
|
@ -258,13 +265,14 @@ struct PixelShaderOutput {
|
||||||
fs_param += "};\n";
|
fs_param += "};\n";
|
||||||
fs_param += fs_sample;
|
fs_param += fs_sample;
|
||||||
|
|
||||||
var fs_pos = "\nvoid main(in VertexShaderOutput input, out PixelShaderOutput output) {\n" + fs + "\n}";
|
fs_preString = fs_param + _fs_preString;
|
||||||
|
var _fs = fs_preString + fs + fs_postString;
|
||||||
|
file_text_write_all(_dir + "fout.shader", _fs);
|
||||||
|
|
||||||
fs = fs_pre + fs_param + fs_pos;
|
preLabel.text = fs_preString;
|
||||||
file_text_write_all(_dir + "fout.shader", fs);
|
|
||||||
|
|
||||||
//print("==================== Compiling ====================");
|
//print("==================== Compiling ====================");
|
||||||
//print(fs)
|
//print(_fs)
|
||||||
//print("===================================================\n");
|
//print("===================================================\n");
|
||||||
|
|
||||||
shader.vs = d3d11_shader_compile_vs(_dir + "vout.shader", "main", "vs_4_0");
|
shader.vs = d3d11_shader_compile_vs(_dir + "vout.shader", "main", "vs_4_0");
|
||||||
|
@ -274,18 +282,18 @@ struct PixelShaderOutput {
|
||||||
shader.fs = d3d11_shader_compile_ps(_dir + "fout.shader", "main", "ps_4_0");
|
shader.fs = d3d11_shader_compile_ps(_dir + "fout.shader", "main", "ps_4_0");
|
||||||
if (!d3d11_shader_exists(shader.fs))
|
if (!d3d11_shader_exists(shader.fs))
|
||||||
noti_warning(d3d11_get_error_string());
|
noti_warning(d3d11_get_error_string());
|
||||||
} if(!LOADING && !APPENDING) refreshShader(); #endregion
|
} if(!LOADING && !APPENDING) refreshShader();
|
||||||
|
|
||||||
static onValueUpdate = function(index) { #region
|
static onValueUpdate = function(index) {
|
||||||
var _refresh = index == 0 || index == 1 || (index >= input_fix_len && (index - input_fix_len) % data_length != 2);
|
var _refresh = index == 0 || index == 1 || (index >= input_fix_len && (index - input_fix_len) % data_length != 2);
|
||||||
|
|
||||||
if(_refresh) {
|
if(_refresh) {
|
||||||
refreshShader();
|
refreshShader();
|
||||||
refreshDynamicInput();
|
refreshDynamicInput();
|
||||||
}
|
}
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static processData = function(_output, _data, _output_index, _array_index = 0) { #region
|
static processData = function(_output, _data, _output_index, _array_index = 0) {
|
||||||
var _surf = _data[2];
|
var _surf = _data[2];
|
||||||
if(!is_surface(_surf)) return noone;
|
if(!is_surface(_surf)) return noone;
|
||||||
if(!d3d11_shader_exists(shader.vs)) return noone;
|
if(!d3d11_shader_exists(shader.vs)) return noone;
|
||||||
|
@ -377,7 +385,7 @@ struct PixelShaderOutput {
|
||||||
surface_reset_target();
|
surface_reset_target();
|
||||||
|
|
||||||
return _output;
|
return _output;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static postLoad = function() {
|
static postLoad = function() {
|
||||||
refreshShader();
|
refreshShader();
|
||||||
|
|
Loading…
Reference in a new issue